C/C++
fopwolf
这个作者很懒,什么都没留下…
展开
-
实现文件夹浏览器
通过调用LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFO lpbi);函数来显示文件夹浏览器。参数lpbi是一个指向BROWSEINFO结构的指针,BROWSEINFO结构原型参考MSDN。如果用户选择了OK按钮,返回一个IPEMIDLIST指针,把这个值传递给SHGetPathFromIDList函数就可以得到选择的文件夹的路径。如果选择Cancel按钮,原创 2007-07-27 10:55:00 · 865 阅读 · 0 评论 -
VC6.0代码向VS2005迁移遇到的问题与解决
VC2005和VC6的编译环境,库的支持有诸多的不同,所以直接迁移有很多无法预料的风险。目前遇到的主要问题如下:1. MFC类库有些类的接口定义已发生改变,如CRichEditCtrl::CreateEx函数,CWnd:: OnActivateApp消息相应函数。2. 库支持方面的更改,目前ToolsSDK库是VC6环境下编译的,其中有些函数依赖于VC6下的一些特定库,直接把VC6下原创 2008-10-20 14:39:00 · 2642 阅读 · 0 评论 -
非中文代码页中文字符乱码问题
Windows 2000以上的操作系统,如果改变了操作系统的时间日期格式,设置为非中文(中国),在VS2005中编译的程序,如果调用A2W之类的字符转换宏,或者CString的构造函数和CString::LoadString函数,中文字符会出现乱码。这让我非常困惑,只是改变了时间日期的格式,并有改变默认的非ASCII码的字符集啊,怎么会出现乱码问题呢?细看A2W代码,发现最后会调用MultiByt原创 2009-01-07 10:59:00 · 1269 阅读 · 0 评论 -
VC小技巧
1. CEdit在获得焦点时选中文本CEdit响应EN_SETFOCUS消息时,如果是鼠标点击出发,会在相应EN_SETFOCUS后继续相应OnClick消息,如果想自定义选中的字符串,简单的调用一下SetSel是不管用的,CEdit中光标的位置还是会移到鼠标单击的区域,而不是我们指定的字符串选中状态,应该用PostMessage(EM_SETSEL, startpos, endpos)的方法原创 2009-03-30 12:33:00 · 421 阅读 · 0 评论 -
[转载]判断当前窗口是否是全屏的山寨版和官方版
山寨版很好很强大:简单介绍一下,这是我用过的,获取屏幕的四个顶点(具体检测的时候可以向屏幕的中心剪一个像素,譬如检测1,1而不是0,0)所在窗口的句柄,如果四个句柄都相同,则认为是全屏状态,其实有个问题,有些程序全屏的时候,还会有窗口弹出来,典型的像播放软件,全屏的时候,下面还有一个工具栏,这个工具栏和后面的播放窗口是不同的,所以检测失败了。对这种方法加强就是,获取四个点窗口所在的进程转载 2009-06-03 17:00:00 · 1166 阅读 · 0 评论 -
对话框程序设置Class Name
一般对话框程序不能在VC的资源编辑器里设置/修改Class Name,对话框属性的Class Name为不可用状态。但可以通过稍作修改,来达到设置对话框Class Name的目的。1. 在资源view中,右键单击*.rc,点属性,修改MFC Mode为false;2. 在看对话框的属性设置中,Class Name属性已经变成可编辑的状态了,设置好Class Name后保存;3. 在创建原创 2009-08-28 17:06:00 · 1270 阅读 · 0 评论 -
VC中的定时器与消息机制
用VC编程,最重要的是要熟悉消息机制。但这一点好像并不是那么容易搞懂,至少现在我还不是完全明白,只有遇到问题时才想办法把它查清楚。 案例:通过SetTimer设置一个定时器,在OnTimer中,设置弹出一个对话框,如MessageBox("Hello")。你会发现对话框会不断的弹出,而不是阻塞在那里?如果你对这个问题很清楚,并且不会认为这是多线程机制,那恭喜你,你一定对Windows消转载 2012-03-12 11:05:19 · 463 阅读 · 0 评论