繁体   English   中英

在win32中创建自定义消息类型?

[英]Creating custom message types in win32?

有没有办法在Win32中定义和发送自定义消息类型,以便被主消息处理程序捕获? 例如,我的主消息处理程序捕获诸如WM_PAINT,WM_RESIZE,WM_LBUTTONDOWN等消息。我可以创建自己的WM_DOSOMETHING吗? 如果是这样,我将如何发送此消息?

啊,我实际上刚刚发现这是在之前被问到的,但是,它并没有回答我实际发送此消息的方式。

哇,让我们停下来想想......

首先,Windows本身在WM_USER+n范围内发送消息,这就是WM_APP被发明的原因(我发现这很难)。 但它变得更糟......没有什么可以阻止播放 WM_USER+nWM_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
  • 如果要将消息广播到每个顶级窗口,请使用RegisterWindowMessage注册您自己的全局消息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM