这是消息处理机制,建议你了解一下Windows的消息机制看看:PeekMessage
TranslateMessage
DispatchMessage
TranslateMessage
DispatchMessage
解决方案 »
- 帮我看下SDK的视频截图的BUG
- intel IPP 的连接问题
- 我学了半年的c++,现在想学mfc,能提供一本比较好的书么??
- 如何取得本机PPP的IP地址,通过互连网发送到指定的邮箱里?
- 有几个问题,对于我这个新手很是棘手,那位大哥给个qq号以便请教?
- windows API如何处理用户界面更新!就象MFC封装好的,UPDATE_COMMAND_UI那样??
- 問個乘法越界的問題
- MFC中有没有这样的功能?
- DirDialog.obj : error LNK2001: unresolved external symbol __imp__MakeSureDirectoryPathExists@4
- 关于80386的虚拟内存模式
- 如何在大众(没安装.net)的机器上安装我用C#语言自编的BHO.dll(是个有接口的类库),用regAsm可以编译成功,regsvr32不支持C#编的.dll
- 一个消息处理问题,请大家帮忙解答
while(i<...)
{
DoEvent();
}
我的理解是这样的:因为这个程序只有一个线程,就是应用程序主线程,所以主线程执行到这个while(i<...)时,他会一直执行,只到i<...这个条件变为假的了,他才跳出,你想啊,假如说i<10000000000000000000,这么大一个数,他得执行多久才能跳出啊,如果说是得执行一个小时才跳出,那么在这一个小时内,当用户点击“关闭”按钮时,系统把这个“关闭”消息放在这个主线程的消息队列中,但是呢,因为这个主线程一直在执行这个while(i<..)的循环,他不能够到消息队列中去取消息,直到while(i<...)循环完了,他才有空到队列中取消息,于是取到“关闭”消息,程序退出。要是你想在循环的时候也能取到消息怎么办呢,就在while(i<...)循环里去取,每循环一次我就取一次消息(就是调用DoEvent()函数),这样你点“关闭”的这个消息不是就被取出来了吗,一取出来了,程序就退出了。