[英]Creating custom message types in win32?
有没有办法在Win32中定义和发送自定义消息类型,以便被主消息处理程序捕获? 例如,我的主消息处理程序捕获诸如WM_PAINT,WM_RESIZE,WM_LBUTTONDOWN等消息。我可以创建自己的WM_DOSOMETHING吗? 如果是这样,我将如何发送此消息?
啊,我实际上刚刚发现这是在此之前被问到的,但是,它并没有回答我实际发送此消息的方式。
哇,让我们停下来想想......
首先,Windows本身在WM_USER+n
范围内发送消息,这就是WM_APP
被发明的原因(我发现这很难)。 但它变得更糟......没有什么可以阻止播放 WM_USER+n
或WM_APP+n
消息的行为WM_APP+n
应用程序,并且因为人类偷走了众神无限愚蠢的晶体,这确实发生在现实世界中。
所以,在我之后重复,唯一安全的信息是我自己定义的,只能看到自己。 使用RegisterWindowMessage。 即便如此,也不要信任。 当我需要一个字符串来定义RegisterWindowMessage时,我使用GUIDGEN创建字符串并在生成的gobbledygook上放置一个人类可读的特定于应用程序的前缀,以帮助我区分代码中的多个消息。
打赌你的人类的愚蠢 - 这总是一个赢得赌注。
如果您想要了解整个主题的权威背景,请参阅此处 。 不,这不是我的网站,它是Joe Newcomer的。
是。 只需在WM_USER范围内声明一个常量,例如
#define WM_RETICULATE_SPLINES (WM_USER + 0x0001)
您还可以使用RegisterWindowMessage API按名称注册消息。
然后,您可以使用SendMessage,PostMessage或其任何变体发送这些消息。
WM_USER
范围(或WM_APP
) WM_APP
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.