在win32中创build自定义消息types?

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

啊,其实我刚才发现这是在这之前问的,但是,它并没有回答我实际上是怎么发送这个消息的。

Solutions Collecting From Web of "在win32中创build自定义消息types?"

是。 只需在WM_USER范围内声明一个常量即可

#define WM_RETICULATE_SPLINES (WM_USER + 0x0001) 

您还可以使用RegisterWindowMessage API按名称注册消息。

然后,您可以使用SendMessage,PostMessage或其任何变体发送这些消息。

哇,我们就停下来想一想

首先,Windows自己发送WM_USER+n范围内的消息,这就是为什么WM_APP被发明的原因(我发现这很困难)。 但是情况变得更糟了……没有什么能够阻止糟糕的应用程序广播 WM_USER+nWM_APP+n信息,而且人类从神那里偷走了无限愚蠢的水晶,这确实发生在现实世界中。

所以,重复一遍,唯一安全的信息就是我自己定义的一个信息,只能看到自己。 使用RegisterWindowMessage。 即便如此,不信任。 当我需要一个字符串来定义一个RegisterWindowMessage时,我使用GUIDGEN来创建字符串,并在生成的gobbledyook上放置一个人类可读的应用程序特定的前缀来帮助我区分代码中的多个消息。

打赌你的同胞的愚蠢 – 这总是一个胜利的赌注。

如果你想要在这整个主题的权威背景,请看这里 。 不,那不是我的网站,是乔新人的。

  • 如果您创建了窗口 ,则可以使用WM_USER范围(或WM_APP
  • 如果不是你的类,你可以使用WM_APP
  • 如果要将消息广播到每个顶层窗口,请使用RegisterWindowMessage注册您自己的全局消息