摘要: SetTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器。计时器属于系统资源,使用完应及时销毁。 SetTimer的函数原型如下:UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc ) ; 其中 hWnd是和timer关联的窗口句柄,此窗口必须为调用SetTimer的线程所有;如果hWnd为NULL,没有窗口和timer相关联并且nIDEvent参数被忽略 nIDEvent是timer的标识,为非零值;如果hWnd为NULL则被忽略;如果hWn... 阅读全文
posted @ 2014-01-20 17:35 数据世界 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 使窗口透明可以利用Windows提供的SetLaygerWindowAttributes设置透明和不透明的颜色关键值来实现的。1SetLaygerWindowAttributes函数 BOOL SetLayeredWindowAttributes(HWND hwnd, // handle to the layered windowCOLORREF crKey, // specifies the color keyBYTE bAlpha, // value for the blend functionDWORD dwFlags // action); 参数说明:hWnd是透明窗体的句柄,... 阅读全文
posted @ 2014-01-20 10:12 数据世界 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 摘要:本文对Windows剪贴板机制作了深入、全面的阐述,具体内容包括:文本、位图、DSP、自定义格式剪贴板的使用和多数据项和延迟提交技术。 关键词:VC++6.0; 剪贴板机制;数据格式;延迟提交 Windows剪贴板 Windows剪贴板是一种比较简单同时也是开销比较小的IPC(InterProcess Communication,进程间通讯)机制。Windows系统支持剪贴板IPC的基本机制是由系统预留的一块全局共享内存,用来暂存在各进程间进行交换的数据:提供数据的进程创建一个全局内存块,并将要传送的数据移到或复制到该内存块;接受数据的进程(也可以是提供数据的进程本身)获取此内存块... 阅读全文
posted @ 2014-01-16 13:27 数据世界 阅读(1378) 评论(0) 推荐(0) 编辑
摘要: 转自 什么是SysWow64 Wow!什么是Wow6464位的Windows并不是简单地把所有东西都编译成64位就万事大吉的。关于64位的CPU应该做成什么样子,Intel和AMD曾有各自的打算。AMD的回答直接了当:新的64位处理器,应该能在提高更高处理能力的同时,保持对32位应用程序的兼容性。而Intel则希望借此机会,把下一代的处理器,设计得更完美。于是,就有了AMD的x86-64(后被称为amd64)的处理器和Intel的IA-64(安腾)处理器。和amd64不一样的是,安腾处理器并没有很好地提供对32位应用程序的支持。具体信息,读者在网上应该很容易找到,也就不多说了。Windows作 阅读全文
posted @ 2014-01-15 11:27 数据世界 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 一 FromHandle() MFC 实际上是对内核对象HANDLE(如CDC的m_hDC,CWnd的m_hWnd)封装了这个句柄有关的所有操作,一个类生成一个新对象的时候这个句柄是无效的,要获得这个句柄,可以有两个方法,一个是Create来创建,另一个就是用Attach来与一个已有的句柄建立关联,实际上也就是给类的句柄成员变量赋值。 而有些时候这个句柄不是由我们创建,但是我们要对它的封装类进行操作,(mfc 框架)必需创建对应的封装类包装它MFC 中对各种包含内核对象的封装类都有FromHandle(HANDLE h)方法。FromHandle(HANDLE h) 先查找由用户定义的内... 阅读全文
posted @ 2014-01-11 10:51 数据世界 阅读(3303) 评论(0) 推荐(0) 编辑
摘要: PeekMessage是一个Windows API函数。该函数为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构。1 语法BOOL PeekMessage(LPMSG IpMsg,HWND hWnd,UINT wMSGfilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);2 参数lpMsg接收消息信息的MSG结构指针。hWnd其消息被检查的窗口句柄。wMsgFilterMin指定被检查的消息范围里的第一个消息。wMsgFilterMax指定被检查的消息范围里的最后一个消息。wRemoveMsg确定消息如何被处理。此参数可取下列值之一:值意义P 阅读全文
posted @ 2014-01-06 14:04 数据世界 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 一 在程序中创建一个打开文件夹对话框,首先需要调用SHBrowseForFolderWINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder( LPBROWSEINFO lpbi)1 BROWSEINFO的结构如下:typedef struct _browseinfo { HWND hwndOwner; // 父窗口句柄 LPCITEMIDLIST pidlRoot; // 要显示的文件目录对话框的根(Root) LPTSTR pszDisplayName; // 保存被选取的文件夹路径的缓冲... 阅读全文
posted @ 2013-12-17 22:59 数据世界 阅读(625) 评论(0) 推荐(0) 编辑
摘要: CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。 1 要使用CFileDialog,先用CFileDialog构造函数构造一个对象,CFileDialog的构造函数如下:CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, ... 阅读全文
posted @ 2013-12-17 20:55 数据世界 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 如果钩子函数定义于当前进程相关的线程中,则钩子函数只能处理当前进程的线程的消息,如果要想处理当前正在运行的所有进程的鼠标消息和键盘消息,那么安装钩子函数的代码必须实现在动态链接库中。所以如果想让安装的钩子过程与所有进程相关,则应该讲SetWindowsHookEx函数的第四个参数设置为0,第三个参数hMod设置为安装钩子函数的代码所在的DLL的句柄。 下面是创建全局钩子的步骤: 1 创建一个名为GloabHookMFC的MFCDLL工程。 2 在GlobalHookMFC.cpp的开头声明钩子函数句柄、DLL模块句柄和窗口句柄 #pragma data_seg(".SHARDAT&q 阅读全文
posted @ 2013-12-14 23:14 数据世界 阅读(1078) 评论(0) 推荐(0) 编辑
摘要: 什么是HOOK呢?其实很简单,HOOK就是对Windows消息进行拦截检查处理的一个函数。在Windows的消息机制中,当用户产生消息时,应用程序通过调用GetMessage函数取出消息,然后把消息放入到消息队列,再使用消息调度函数DispatchMessage函数讲消息调度给系统,Windows系统会调用创建窗口类时制定的窗口过程中进行次消息的处理。而HOOK函数的话,就可以对此消息进行拦截。经过此HOOK函数的处理后,再决定是屏蔽掉此消息,还是继续往下传递。至于为什么叫“钩子”,可能就是因为它可以像钩子一样把消息给钩住。话说四川话里面的“钩子”却是屁股的意思...哈哈,四川的同学读钩子.. 阅读全文
posted @ 2013-12-14 18:40 数据世界 阅读(2030) 评论(0) 推荐(0) 编辑