C++ 来自GetMessage的Windows消息9?
编辑:删除我粘贴在这里的代码。我的代码中的错误导致了所描述的行为(switch语句中缺少C++ 来自GetMessage的Windows消息9?,c++,winapi,wndproc,getmessage,C++,Winapi,Wndproc,Getmessage,编辑:删除我粘贴在这里的代码。我的代码中的错误导致了所描述的行为(switch语句中缺少break) 在处理来自GetMessage的消息的switch语句中,我为两条没有定义别名的消息(使用我在此处找到的列表:)输入了整数值,如果收到其中一条消息,就会弹出消息框。我的期望是,这些未命名的消息只是被弃用,永远不会出现 我还尝试了WM_ACTIVATE下的一些代码,如果我点击了它,应该可以最小化窗口。我把事情搞砸了,所以窗户一打开就会自动缩小,但这不是我来这里的原因。一旦窗口打开并最小化,消息框就
break
)
在处理来自GetMessage
的消息的switch
语句中,我为两条没有定义别名的消息(使用我在此处找到的列表:)输入了整数值,如果收到其中一条消息,就会弹出消息框。我的期望是,这些未命名的消息只是被弃用,永远不会出现
我还尝试了WM_ACTIVATE
下的一些代码,如果我点击了它,应该可以最小化窗口。我把事情搞砸了,所以窗户一打开就会自动缩小,但这不是我来这里的原因。一旦窗口打开并最小化,消息框就会弹出,告诉我Windows已发送消息9。如果我关闭它,消息框会再次弹出
所以我想知道,有人知道是什么事件触发了这条信息吗?或者,对于这个问题,GetMessage返回的任何一个没有别名的整数值?我发现列出Windows消息的所有内容都忽略了与我在上面发布的链接相同的编号。未在公共头文件中列出的编号较低的消息很可能是为兼容而保留的不推荐使用的Windows 3.1(或更早版本)消息(或者是因为微软没有人认为删除它们足够重要) 您可以在各种Windows替换项目(如Wine或ReactOS)的源代码中找到它们的线索。事实上,从ReactOS标题:
#define WM_SETVISIBLE 0x00000009
这似乎是WM_SHOWWINDOW
消息的前身,并与相同的参数同时发送
我在中还发现了一个关于消息0x0004
的讨论,甚至ReactOS似乎都不知道。在那里,消息被描述为WM_SIZEWAIT
,但没有关于其功能的线索
简言之,这些消息没有记录是有原因的——它们不是您编写的任何软件所需要或使用的,您应该忽略它们。看起来您的
break
语句都超出了各自的case块。@hosch250您是对的;我在break
ode>switch语句就在应该弹出消息框的语句的正上方,因此WndProc实际上没有收到该消息。不知道我是怎么错过的。将问题留给下面的答案。谢谢。我很好奇,因为我以为我收到了该消息,但事实证明我没有收到(正上方的WM_ACTIVATE
案例中缺少一个break
语句)。我怀疑消息队列中确实不会收到未列出的语句。