سؤال

I recently ran into a situation where I wanted to use a modeless dialog in Win32's.

Win32: Toolbar dialog seems to never get focus and causes the main window to process slow!?

And I figured out that this was my message loop:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
    // Doing required stuff here...

    while (GetMessage(&Msg, hWnd, 0, 0) > 0) {
        // Processing messages here...
    }
}

In fact, this message loop works fine as long as I don't have any modeless dialog, as it works perfectly fine with modal dialogs, since they process their own message loop. My modeless dialog worked flawlessly when I replaced the hWnd instance for NULL. I just don't get the difference, except that it seems that I get the messages not for one particularly window.

Can someone explain what is making this message loop work inccorectly?

As this one:

while (GetMessage(&Msg, NULL, 0, 0) > 0) {
    // Processing messages here...
}

works flawlessly!

هل كانت مفيدة؟

المحلول

the difference is pretty obvious: you specified a HWND in GetMessage. So, you are not processing any messages for any other windows, your toolbar included. See the docs for GetMessage

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top