Win32:是啥让我的消息循环在该示例中无法正常工作?
Posted
技术标签:
【中文标题】Win32:是啥让我的消息循环在该示例中无法正常工作?【英文标题】:Win32: What is making my message loop work incorrectly in that example?Win32:是什么让我的消息循环在该示例中无法正常工作? 【发布时间】:2010-12-16 20:57:23 【问题描述】:我最近遇到了一种情况,我想在 Win32 中使用无模式对话框。
Win32: Toolbar dialog seems to never get focus and causes the main window to process slow!?
我发现这是我的消息循环:
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...
事实上,只要我没有任何无模式对话框,这个消息循环就可以正常工作,因为它与模式对话框完美配合,因为它们处理自己的消息循环。当我将hWnd
实例替换为NULL
时,我的无模式对话框完美运行。我只是不明白其中的区别,只是我收到的消息似乎不是针对某个特定窗口的。
有人能解释一下是什么让这个消息循环工作不正确吗?
作为这个:
while (GetMessage(&Msg, NULL, 0, 0) > 0)
// Processing messages here...
完美运行!
【问题讨论】:
是的,有点太明显了。无模式对话框还需要在消息循环中使用 IsDialogMessage()。 @Hans:是的,确实如此。我应该已经在这些示例中编写了它,我确实将它包含在链接中的问题中,尽管我没有在这里说明它。我的错。 【参考方案1】:区别非常明显:您在GetMessage
中指定了HWND
。因此,您没有处理任何其他窗口的任何消息,包括您的工具栏。请参阅GetMessage 的文档
【讨论】:
谢谢!我想确保我正确理解了我的错误,并且您的回答反映了我的想法,尽管我不确定。 =)以上是关于Win32:是啥让我的消息循环在该示例中无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章
是啥让我的模型在笔记本电脑和 colab 上运行时预测错误值?