博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Windows MFC

摘要:正常情况下,一个进程的运行一般是不会影响到其他正在运行的进程的。但是对于某些有特殊要求的如以独占方式使用串行口等硬件设备的程序就要求在其进程运行期间不允许其他试图使用此端口设备的程序运行的,而且此类程序通常也不允许运行同一个程序的多个实例。这就引出了进程互斥的问题。 实现进程互斥的核心思想比较简单:进程在启动时首先检查当前系统是否已经存在有此进程的实例,如果没有,进程将成功创建并设置标识实例已经存在的标记。此后再创建进程时将会通过该标记而知晓其实例已经存在,从而保证进程在系统中只能存在一个实例。具体可以采取内存映射文件、有名事件量、有名互斥量以及全局共享变量等多种方法来实现。下面就分别对... 阅读全文

posted @ 2013-05-24 17:21 Taoyz 阅读(343) 评论(0) 推荐(0)

摘要:1 typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); 2 LPFN_ISWOW64PROCESS fnIsWow64Process; 3 BOOL bIsWow64 = FALSE; 4 fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(_T("kernel32")),"IsWow64Process"); 5 if (NULL != fnIsWow64Process) 6 { 7 ... 阅读全文

posted @ 2013-05-20 17:36 Taoyz 阅读(128) 评论(0) 推荐(0)

摘要:窗口类对象与窗口并不是一回事它们之间惟一的关系是窗口类对象内部定义了一个窗口句柄变量保存了与这个窗口类对象相关的那个窗口的句柄窗口销毁时,与之对应的窗口类对象销毁与否,要看其生命周期是否结束窗口类对象销毁时,与之相关的窗口也将销毁 阅读全文

posted @ 2013-05-20 17:31 Taoyz 阅读(142) 评论(0) 推荐(0)

摘要:分步骤如下:1,定义用户消息1 #define WM_TRAY_NOTIFY (WM_USER + 8118)2,添加托盘图标 1 NOTIFYICONDATA data; 2 memset(&data, 0, sizeof(data)); 3 // the basic functions need only V1 4 #ifdef NOTIFYICONDATA_V1_SIZE 5 data.cbSize = NOTIFYICONDATA_V1_SIZE; 6 #else 7 data.cbSize = sizeof(data); 8 #endif 9 data.hWnd = ... 阅读全文

posted @ 2013-05-20 17:30 Taoyz 阅读(197) 评论(0) 推荐(0)

摘要:窗口对象使用完毕,应该销毁。在MFC下,一个窗口对象的销毁包括HWND窗口对象的销毁和MFC窗口对象的销毁。一般情况下,MFC编程框架自动地处理了这些。(1)对CFrameWnd和CView的派生类这些窗口的关闭导致销毁窗口的函数DestroyWindow被调用。销毁Windows窗口时,MFC框架调用的最后一个成员函数是OnNcDestroy函数,该函数负责Windows清理工作,并在最后调用虚拟成员函数PostNcDestroy。CFrameWnd和CView的PostNcDestroy调用delete this删除自身这个MFC窗口对象。所以,对这些窗口,如前所述,应在堆(Heap)中分 阅读全文

posted @ 2013-05-20 17:16 Taoyz 阅读(380) 评论(0) 推荐(0)

摘要:PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的通过重载这个函数,我们可以改变MFC的消息控制流程,甚至可以作一个全新的控制流出来只有穿过消息队列的消息才受PreTranslateMessage()影响采用SendMessage()或其他类似的方式向窗口直接发送的而不经过消息队列的消息根本不会理睬PreTranslateMessage()的存在。如果该函数返回TRUE,则不会把该消息分发给窗口函数处理。传给PreTranslateMessage()的消息是未经翻译过的消息,它没有经过TranslateMessage()处理可以在该函数中使用(p 阅读全文

posted @ 2013-05-20 17:14 Taoyz 阅读(383) 评论(0) 推荐(0)