- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 学习笔记 -- Win32多线程程序设计(三) 同步机制 Critical section and Mutex
类似SendMessage() 为同步,PostMessage()为异步线程中同步机制 --> Critical sectionCritical section 是一块线程共享资源,使用下面这些API, 来保证同一时间只有一个线程可以操作该critical section。(即给资源加锁)void WINAPI InitializeCriticalSection(
2017-08-14 16:07:37
385
原创 学习笔记 -- Win32多线程程序设计(二) WaitForSingleObject and WaitForMultipleObjects
通过前一篇文章,我们已经知道可以通过GetExitCodeThread 来不断获取线程状态确定线程是否已经结束。这种方法叫做busy loop或者busy wait。但是这种方法并不好,因为它会浪费CPU 可用时间。只有一两个线程这样去等待还可以,但是如果有成千上百个线程这样去等待的话,CPU的资源将被等待占用,而实际工作的CPU资源将所剩无几。所以我们需要另外一种等待方式
2017-08-14 13:10:11
420
原创 学习笔记 -- Win32 多线程程序设计
创建一个线程使用如下APIHANDLE WINAPI CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ SIZE_T dwStackSize, _In_ LPTHREAD_START_ROUTINE lpStartAddress,
2017-08-12 11:42:54
448
原创 学习笔记 STL Map
Map 的数据结构其实是一种平衡二叉树 (红黑树)。因此其内部并不是一块内存,而是不同的节点。所以当我们做插入,删除时,只是改变节点。因此速度会很快。注意在一个迭代中,不能直接删除map#include "stdafx.h"#include #include #include using namespace std;int _tmain(int argc, _TC
2017-08-11 11:31:47
250
原创 error LNK2001: unresolved external symbol GUID_SELF_DEFINE
今天在调用自定义的GUID时,编译出错了。说未定义该GUID。error LNK2001: unresolved external symbol GUID_SELF_DEFINE
2014-07-11 13:37:36
852
原创 VS2005 Build/Rebuild,显示Skipped Build/Rebuild All: Project:xxx
如果碰到在VS2005Build/Rebuild,显示Skipped Build/Rebuild All: Project:xxx的
2014-05-22 17:14:04
3291
原创 如何获取磁盘剩余空间(包括光驱中的光盘)
在网上找一个API,可以获取指定磁盘剩余空间,包括光驱中的光盘。但是如果光驱中是空白光盘的话,将无法读取。因为空白光盘未格式化过,因此显示格式为RAW,所以无法读取。至于如何读取空白光盘容量,我将在下一篇文章中描述。获取磁盘剩余空间API:BOOL WINAPI GetDiskFreeSpaceEx( _In_opt_ LPCTSTR lpDirectoryName
2013-12-03 17:11:43
2842
原创 解决error LNK2019: unresolved external symbol __imp_SHCreateStreamOnFileW referenced in function wmain
最近在coding中,用到了SHCreateStreamOnFile() 这个API,因此include了这个API的头文件#include ,但是报了以下错误:error LNK2019: unresolved external symbol __imp_SHCreateStreamOnFileW referenced in function wmain这是因为没有link这个头
2013-12-03 14:44:56
5248
原创 使用IMAPI V2 制作Boot image(启动盘)
好久没有更新了,最近在研究用IMAPI 来刻录启动光盘。MSDN的例子都是VB script的例子,以下是我简单写的C++例子。 附上MSDN 对于IMAPI的链接:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366450(v=vs.85).aspx// BurnTest.cpp : Defines the e
2013-12-03 14:37:41
3122
3
原创 Visual Studio 2010 error C2065: '_In_opt_z_' : undeclared identifier 编译错误
当用Visual Studio 2010 编译时 发生如下编译错误:2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2065: '_In_opt_z_' : undeclared identifier2>C:\Program Files (x86)\Microso
2012-11-08 10:38:09
8210
原创 installshield 2010 中SUPPORTDIR的取法
今天在做安装时,需要调用supportdir中的文件。一开始直接使用了SUPPORTDIR。但是发现取不到support file。调试之后,发现Basic MSI Project 会在“%temp%”目录下生成三个临时文件夹,但是SUPPORTDIR指向的路径不是真正包含support file的文件夹。调查之后,应该使用MsiGetProperty()方法来获取SUPPOR
2012-05-28 19:21:46
3298
原创 在installshield中如何创建service and 启动 停止 service
今天要在安装包中安装一个service and 启动 ,卸载时要停止 and uninstall。查了以前公司的代码,发现可以这样做。安装service:if(LaunchAppAndWait( 【service 路径+name】,"/Service", LAAW_OPTION_WAIT ) MessageBox("Create service fail",INFORMAT
2012-05-28 19:15:07
2672
原创 error LNK2019: unresolved external symbol __imp_SetupDiDestroyDeviceInfoList 错误解决
今天把以前代码中取电池信息的类,加入到com工程中。结果报了Link错误。错误如下:error LNK2019: unresolved external symbol __imp_SetupDiDestroyDeviceInfoList referenced in function "private: int __cdecl CNewPwrInfo::_EnumBatteryDeviceP
2012-05-24 10:03:11
8125
原创 WPF中更改Image控件的source
以下是C#中的写法。 BitmapImage imagetemp = new BitmapImage(new Uri("E:\\Work\\Demo2.bmp", UriKind.Absolute));image1.Source = imagetemp;
2012-05-07 19:05:04
2599
原创 在installshield 脚本中添加log的方法
今天为了解一个安装时的bug,需要在安装过程的脚本中加入log,写到文件中,于是在网上找了一个方法。现在跟大家分享。function WriteFileLog(LogString) STRING LogFileName,svResult,svResult2,CKSresult; NUMBER nvResult,CKNresult;
2012-05-07 19:02:46
1672
原创 添加电源icon的右键菜单选项
在windows中,系统为我们准备了6个电源icon的右键菜单。具体实现可以进行在注册表中添加值实现。具体位置如下:HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Applets\\SysTray\\BattMeter\\ContextMenu\\%d附上C#例子using Micro
2012-05-02 16:34:50
846
原创 如何用c++或者C#打开特殊的系统窗口,如power options
这几天在做新项目,新项目中,有一个需求,需要点击一个按钮,打开power options。经过查找分别得到C++和C#下的两个api可以调用一些特殊命令来实现。方法如下:打开power options.C++:WinExec("rundll32.exe shell32.dll,Control_RunDLLpowercfg.cpl",SW_SHOWNORMAL);C#: using
2012-05-02 13:54:38
1061
原创 请选择【Use MFC in a Static Library】创建工程
这几天要release一个版本,结果发现release出来的东西,在没有装编译环境的电脑上就杯具了。在没有安装编译环境的电脑上根本打不开软件。双击就说软件构成不正确什么的。后来,发现是工程使用了【Use MFC in a Shared DLL】所以才会这样。于是简单的选择了【
2011-08-30 10:35:25
2436
原创 Warning 1 Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a fu
开始用visual studio.NET 2008,但将vs2005的程序转到2008上,出现了如下warning: Warning 1 Command line warning D9035 : option 'Wp64' has been deprecated and wi
2011-08-26 13:37:14
2056
原创 MS Visual Studio 2008 编译错误 microsoft visual studio 9.0\vc\include\new.h(60) : error C2065: '_In_opt_
这几天为了使用一个带有256*256 PNG格式的icon图标,必须在visual studio 2008上编译。因此,在一台xp机器上装了2008,之前这台电脑还安装了sdk,WDK和vs2005.结果一编译就出错了。以为是xp系统问题,于是又拿了台win7的电脑试了一下,
2011-08-12 15:47:56
5727
原创 tlb文件的使用方法
今天做一个项目,需要用到tlb文件。本人之前没有接触过任何关于com组件的东西。因此很迷茫。经过很长时间的学习,纠结。终于领悟了个大概。下面我把这两天的成果,与大家分享一下。首先,准备两个tlb文件,一个是32位的,一个是64位的。这个很重要。我一开始碰到的错误就是由于版本不
2011-08-08 16:34:48
12139
原创 如何判断radio button是否被选中
判断用:(CButton*)GetDlgItem(IDC_RADIO1)->GetCheck()设置用:(CButton*)GetDlgItem(IDC_RADIO1)->SetCheck(TRUE)
2011-08-02 15:33:22
7054
原创 窗口居中显示
在窗口初始化的时候,执行这组代码 //****居中显示 RECT rcDlg; int cxDlg,cyDlg; ::GetWindowRect(hWnd,&rcDlg); cxDlg=rcDlg.right-rcDlg.left; ::cyDlg
2011-08-02 15:32:11
563
原创 string table中应用转义字符进行换行
今天在做一个小工具时,需要把stringtable中的string放入到editbox中,其中是几段文字,所以需要换行。具体操作如下:1.把edit box的Multiline属性和want return属性设置为true。2.把Auto HScroll属性设置为fa
2011-08-02 15:31:28
1812
原创 “The application has failed to start because its side-by-side configuration is incorrect...”问题
今天拿32bit程序去win7 x64 下跑,结果打开弹出以下错误后来查明后得知原因。32bit到win7x64下跑,有可能会产生此类错误。可以编译一个64bit的程序再去跑就没问题了。或者在win7 x64 系统下安装vs2005.
2011-07-27 13:02:28
3776
原创 vs2005 利用string table 制作多语言
今天要在keyboard backlight软件上添加多语言,但是该软件运行在xp环境下,MUI无法应用,因此选择了string table来完成多语言的支持。具体操作如下:1.打开工程rc视图,选中String table中的唯一一张表String table,点击右键选择In
2011-07-25 15:40:42
3126
原创 GDI泄露心得
最近,刚刚开始做C++。我主要负责页面上的东西。做完后发现GDI泄露很严重。经过总结,主要是以下几点地方要注意。1.getdc()出来的DC,一定要用ReleaseDC()处理。2.HBITMAP要用DeleteObject()处理。目前还剩下一个问题。我程序中用了ctreectrl,然后要设置成启动时默认有几个选项被打上勾,这样就要用到ModifyStyl(TVS_CHECKBOXES,0);ModifyStyle(0,TVS_CHECKBOXES);这两句。前面那句是去掉TVS_CHECKBOXES
2010-09-17 16:06:00
1739
用ATL创建一个空的Service
2014-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人