Windows消息:WM_USER与WM_APP的区别

Windows消息范围及意义

#define WM_USER 0x0400 
#define WM_APP 0x8000

0到WM_USER-1 
Messages reserved for use by the system 
系统预留使用的消息

WM_USER到0x7FFF 
Integer messages for use by private window classes 
被私有窗口类使用的消息

WM_APP到0xBFFF 
Messages available for use by applications 
被应用程序使用的消息

0xC000到0xFFFF 
String messages for use by applications 
被应用程序使用的字符串消息

大于0xFFFF 
Reserved by the system 
系统预留

WM_USER与WM_APP的区别

WM_USER到0x7FFF: 
仅在自己预定义的窗口内部使用

WM_APP到0xBFFF: 
在应用程序的其他地方均可使用

注意:这只是一种约定俗成的规则,约定只是best practice,并不是说你不这么做就一定会出问题. 
如果程序的所有窗口和所有控件完全由你一个人实现,你完全可以不遵守这一规则. 
但若有其他人写的代码或加载了外来的控件,如果你不遵守这一规则,发生冲突的概率会明显加大,可能会出现意想不到的结果.

RegisterWindowMessage

The RegisterWindowMessage function defines a new window message that is guaranteed to be unique throughout the system. 
The message value can be used when sending or posting messages. 
UINT RegisterWindowMessage(LPCTSTR lpString) 
The RegisterWindowMessage function is typically used to register messages for communicating between two 
cooperating applications. 
If two different applications register the same message string, the applications return the same message value. 
The message remains registered until the session ends. 
Only use RegisterWindowMessage when more than one application must process the same message. 
If the message is successfully registered, 
the return value is a message identifier in the range 0xC000 through 0xFFFF.

http://blog.csdn.net/hisinwang/article/details/45771711

原文地址:https://www.cnblogs.com/findumars/p/8306946.html