首先看下MSDN的文章
| Range | Description |
|---|---|
| From 0 through WM_USER –1 | Messages reserved for use by the system. |
| From WM_USER through 0x7FFF | Integer messages for use by private window classes. |
| WM_APP through 0xBFFF | Messages available for use by applications. |
| 0xC000 through 0xFFFF | String messages for use by applications. |
| Greater than 0xFFFF | Reserved by the system for future use. |
看过之后是不是大概明白了。如果不还不明白的话。
#define WM_GET (WM_USER+112) 和 #define WM_GET (WM_APP+112)除了值不同外,有区别吗?
(1)WM_USER through 0x7FFF Integer messages for use by private window classes. WM_APP through 0xBFFF Messages available for use by applications.
(2)默认规则是以WM_USER+X(WM_USER--0x7fff)用于窗口级的消息,WM_APP+X(WM_APP--0xbfff)用于进程级的消息.
(3)我的理解:第一种定义用于进程内消息,第二种定义用于进程间消息
(4)约定俗成的一种规则。
WM_USER through 0x7FFF: 仅在自己预定义的窗口内部使用;
WM_APP through 0xBFFF: 在应用程序的其他地方均可使用
WM_USER through 0x7FFF: 仅在自己预定义的窗口内部使用;
WM_APP through 0xBFFF: 在应用程序的其他地方均可使用
例一:
如果程序的所有窗口和所有控件完全由你一个人实现,你完全可以不遵守这一规则。
但若有其他人写的代码或加载了外来的控件,如果你不遵守这一规则,发生冲突的概率会明显加大,可能会出现意想不到的结果。
但若有其他人写的代码或加载了外来的控件,如果你不遵守这一规则,发生冲突的概率会明显加大,可能会出现意想不到的结果。
例二:
这样的:我的COM里需要定义一个通知消息,来通知应用程序为它填充缓冲,这个COM是一个进程内的COM,当我#define WM_GET (WM_USER+112) 时,通过测试30次,可能要失败1次,用#define WM_GET (WM_APP+112)时,30次全成功,但现在不敢肯定是它引起的,有可能其他地方还会有影响。
本文详细解释了Windows消息WM_USER和WM_APP的区别及应用范围。WM_USER适用于私有窗口类消息,而WM_APP则可供整个应用程序使用。文章通过实例说明了两种消息在实际编程中的不同用途及其潜在的影响。
4784

被折叠的 条评论
为什么被折叠?



