例如: 主线程中一个对话框的按钮事件如下:
for(int i=0; i<1000; i++)
{
Sleep(10);
if(i%100)
{
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(!theApp.PumpMessage())
{
::PostQuitMessage(0);
return;
}
}
}
}
如果将
if(i%100)
{
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(!theApp.PumpMessage())
{
::PostQuitMessage(0);
return;
}
}
}
去掉后,只有执行完该函数后 主线程的其他消息才能响应 导致拖动界面操作无法执行
本文探讨了在主线程对话框按钮事件处理中使用PeekMessage和PumpMessage的重要性。通过示例说明,如果不适当处理消息循环,会导致界面响应延迟,影响用户体验。

被折叠的 条评论
为什么被折叠?



