在调试用 C++ 开发的 Windows 应用程序时,我发现这个函数调用 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();
    }

如果您调用上述函数,程序应锁定线程 5 秒钟。但是 PumpWaitingMessages(); 将允许程序响应键盘和鼠标输入。但要小心,因为例如,如果您连续两次单击“确定”按钮,则程序将两次关闭对话框...

关于c++ - CWinThread::PumpMessage 做什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30388049/

10-12 01:55