GetMessage()循环没有获取所有Windows消息?

时间:2016-05-29 06:38:31

标签: c winapi

我认为所有的Windows消息都是通过调用线程的消息队列传递的。并且所有消息在被分派到窗口之前都通过<div class="panel panel-default"> <div class="panel-heading text-center"> <h3 class="panel-title">GALLERY</h3> </div> <div class="panel-body"> <div class="image-box"> <img src="http://placehold.it/300x300"> <P class="caption">Image Description</P> </div> <div class="image-box"> <img src="http://placehold.it/300x300"> <P class="caption">Image Description</P> </div> <div class="image-box"> <img src="http://placehold.it/300x300"> <P class="caption">Image Description</P> </div> </div> </div>传递?

但事实似乎并非如此。在我的下面的代码GetMessage()中,我们没有收到主要的HWND GetMessage()WM_CREATEWM_DESTROY这是如何工作的?因为主HWND正在接收这些消息,而不是通过标准的while循环。

WM_CLOSE

这是我对此感兴趣的一个原因,因为我想执行&#39;功能回调&#39;而不是子类窗口/链窗口程序/覆盖窗口程序。

即;

while (GetMessage(&msg, NULL, 0, 0))
{
    // WM_CREATE, WM_DESTROY, WM_CLOSE messages dont get retrieved through GetMessage
    // ...but the window still received this message.
    switch (msg.message)
    {
    case WM_CREATE:
        OutputDebugString(_T("WM_CREATE\n"));
    break;
    case WM_DESTROY:
        OutputDebugString(_T("WM_DESTROY\n"));
        break;
    case WM_CLOSE:
        OutputDebugString(_T("WM_CLOSE\n"));
        break;
    case WM_LBUTTONDOWN:
        OutputDebugString(_T("WM_LBUTTONDOWN\n"));
        break;
    default: {} break;
    }

    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

0 个答案:

没有答案