首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能用PeekMessage()创建一个成功的消息循环?

为什么我不能用PeekMessage()创建一个成功的消息循环?
EN

Stack Overflow用户
提问于 2016-04-21 09:30:17
回答 1查看 214关注 0票数 0

我猜它正在以某种方式接收WM_QUIT消息,因为这就是while循环所围绕的(根据proc函数,每当处理WM_DESTROY消息时都会发生这种情况)。

每当我使用PeekMessage而不是GetMessage时,窗口就会自动关闭,我使用PeekMessage以最快的速度运行循环

代码语言:javascript
复制
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if(!CreateMainWindow(hinstance, nCmdShow))
   return false;
//this works
while (GetMessage(&msg, (HWND) NULL, 0 , 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
return (int) msg.wParam;
    UNREFERENCED_PARAMETER(lpCmdLine);
}    

//this automatically closes the window
int done = 0;
while (!done)
{
    if (PeekMessage (&msg, NULL, 0 ,0, PM_REMOVE))
    {

        if (msg.message = WM_QUIT)
            done = 1;
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
return msg.wParam;
    UNREFERENCED_PARAMETER(lpCmdLine);

下面是简单的WinProc函数

代码语言:javascript
复制
LRESULT CALLBACK WinProc ( HWND hWnd, UINT msg, WPARAM wParam, LPARAM   
lParam)
{
switch( msg)
{
      Case WM_DESTROY: 
      PostQuitMessage(0);
      return 0;
}
return DefWindowProc ( hWnd, msg, wParam, lParam);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-21 09:56:03

您将WM_QUIT分配给msg.message,而不是比较它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36765436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档