在调试一个用C++开发的Windows应用程序时,我发现了这个函数调用
CWinThread::PumpMessage()
。我已经在MSDN和其他一些论坛帖子中阅读了相关内容以便理解这个函数,但仍不确定它的作用是什么。能否有人帮助我理解一下这个函数的用途?CWinThread::PumpMessage()
。我已经在MSDN和其他一些论坛帖子中阅读了相关内容以便理解这个函数,但仍不确定它的作用是什么。能否有人帮助我理解一下这个函数的用途?这是一个方便的函数,可以防止窗口锁死。在MFC应用程序中使用如下:
void PumpWaitingMessages(){
MSG msg;
while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)){
if (!AfxGetThread()->PumpMessage())
return;
}
}
void CMyDialog::OnOK(){
for (int i = 0; i < 50; i++){
PumpWaitingMessages();
Sleep(100);
//do some lengthy calculations
}
MessageBox("done");
CDialog::OnOK();
}
PumpWaitingMessages();
将允许程序响应键盘和鼠标输入。但要小心,例如,如果连续两次单击“确定”按钮,则程序将关闭对话框两次...