MFC
lvming-elena
这个作者很懒,什么都没留下…
展开
-
正确的使用PeekMessage()
// 使系统无法进入IDLE模式,This PeekMessage loop will NOT let the system go idle. for( ;; ) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT)转载 2015-04-10 13:04:53 · 3937 阅读 · 0 评论 -
Windows窗口消息大全,全不全自己看
1 Windows窗口消息大全,全不全自己看 2 3 ////////////////////////////////////////////////////////////////////////// 4 #include "AFXPRIV.H"//消息值的定义来源 5 #include "Dde.h"//DDE消息值的定义来源 6 #include "CPL.H转载 2015-04-10 10:00:57 · 1489 阅读 · 0 评论 -
多线程编程之三——线程间通讯
七、线程间通讯一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对转载 2015-04-21 11:18:03 · 356 阅读 · 0 评论 -
多线程编程之二——MFC中的多线程开发
五、MFC对多线程编程的支持MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程转载 2015-04-21 11:13:20 · 264 阅读 · 0 评论 -
多线程编程之一——问题提出
一、问题的提出编写一个耗时的单线程程序:新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:1.void CSingleThreadDlg::OnSleepSixSecond()2.{转载 2015-04-21 10:56:48 · 280 阅读 · 0 评论 -
使用 CEvent 类
使用 CEvent 类 CEvent 类提供了对事件的支持。事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步对象。例如在某些网络应用程序中,一个线程(记为A)负责监听通讯端口,另外一个线程(记为B)负责更新用户数据。通过使用CEvent 类,线程A可以通知线程B何时更新用户数据。每一个CEvent 对象可以有两种状态:有信号状态和无信号状态。线程监视位于其中的CEvent转载 2015-04-21 10:02:27 · 1731 阅读 · 0 评论 -
多线程编程之四——线程的同步
八、线程的同步虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能转载 2015-04-21 10:21:06 · 275 阅读 · 0 评论 -
线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点 ----- 转使用多线程技术可以显著地提高程序性能,本文就讲讲在程序中如何使用工作线程,以及工作线程与主线程通讯的问题。 一 创建线程 使用MFC提供的全局函数AfxBeginThread()即可创建一个工作线程。线程函数的标准形式为 UINT MyFunProc(L转载 2015-04-21 09:43:36 · 391 阅读 · 0 评论 -
MFC解决程序退出时死锁和内存或资源泄露的问题
1.在OnDestroy等Windows消息处理函数里,慎用WaitForSingleObject函数,如果等待的对象再被通知之前,另外的线程直接或间接触发了其他消息处理函数,则会引发消息排队,由于当前的消息处理函数正在WaitFor并没有返回,所以其他消息函数可能无法被系统调用,导致死锁。这样程序就无法正常退出了。2.另外在调用会直接或间接触发消息处理函数的函数之前应该使用IsWin转载 2015-08-17 16:14:00 · 1229 阅读 · 0 评论