user-0 提问: RegisterWindowMessageA注册的字符串消息怎么使用？

回复:
user: user-1
content: 如果你知道对字符串处理的算法且算法可逆的话，就可以，MS貌似没有提供获取这个字符串的方法，不知道内核的那个结构中可以获取到

user: user-1
content: 如果需要和其他应用程序通信，推荐使用RegisterWindowMessage 进程内使用WM_USER + X

user: user-0
content: 引用 13 楼 Intel0011 的回复:如果你知道对字符串处理的算法且算法可逆的话，就可以，MS貌似没有提供获取这个字符串的方法，不知道内核的那个结构中可以获取到 换言之就是不能了。。。。那平时对于这种字符串消息用得多吗？

user: user-2
content: 字符串只是为了人能看懂理解的，系统并不需要这个东西，编号就是系统要的，有的话也有可能保存在注册表中，再进一步，你就算跟到字符串有什么作用吗？为什么要这个字符串呢

user: user-0
content: 引用 3 楼 user-2 的回复:注册消息只是告诉操作系统，我需要注册这个消息编号，有这个编号的发给我，至于叫什么并不重要 系统不保存这个字符串吗？

user: user-1
content: 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. For sending private messages within a window class, an application can use any integer in the range WM_USER through 0x7FFF. (Messages in this range are private to a window class, not to an application. For example, predefined control classes such as BUTTON, EDIT, LISTBOX, and COMBOBOX may use values in this range.)

user: user-1
content: 0x0400                     WM_USER 0x0400----0x7FFF    应用程序内自定义私有窗口类消息 0x8000                     WM_APP(WINVER>=4.0) 0x8000----0xBFFF    用户自定义的消息和其他应用程序通信 --------------------------------- 0xC000----0xFFFF    保留给RegisterWindowMessage,用来和其他应用程序通信  根据微软的建议，WM_APP类消息用于程序之间的消息通信，而WM_USER类消息则最好用于某个特定的窗口类。 微软自己遵循这一惯例，所以，公用控件的消息，如TVM_DELETEITEM，基本都是WM_USER类属。 从0xC000开始，到0xFFFF，这个区段的消息值保留给RegisterWindowMessage这个API，此API可以接受一个字符串，把它变换成一个唯一的消息值。  (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: 在应用程序的其他地方均可使用  如果程序的所有窗口和所有控件完全由你一个人实现，你完全可以不遵守这一规则。 但若有其他人写的代码或加载了外来的控件，如果你不遵守这一规则，发生冲突的概率会明显加大，可能会出现意想不到的结果。

user: user-0
content: 引用 11 楼 Intel0011 的回复:RegisterWindowMessage内部有一套算法用字符串来生成一个唯一的消息值，其他字符串生成其他消息值 消息值怎么使用是你的事，RegisterWindowMessage的作用就是将不同的字符串映射为一个唯一的消息值 字符串有助于人理解，消息值是供系统内部来使用的，唯一的要求是：只要与其他消息值不冲突即可 关键是这个字符串还能获取到吗？

user: user-1
content: RegisterWindowMessage内部有一套算法用字符串来生成一个唯一的消息值，其他字符串生成其他消息值 消息值怎么使用是你的事，RegisterWindowMessage的作用就是将不同的字符串映射为一个唯一的消息值 字符串有助于人理解，消息值是供系统内部来使用的，唯一的要求是：只要与其他消息值不冲突即可

user: user-0
content: 引用 9 楼 Intel0011 的回复: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. For sending private messages within a window class, an application can use any integer in the range WM_USER through 0x7FFF. (Messages in this range are private to a window class, not to an application. For example, predefined control classes such as BUTTON, EDIT, LISTBOX, and COMBOBOX may use values in this range.) 感觉对于这个字符串消息还是没怎么解释

user: user-0
content: 引用 5 楼 user-2 的回复:字符串只是为了人能看懂理解的，系统并不需要这个东西，编号就是系统要的，有的话也有可能保存在注册表中，再进一步，你就算跟到字符串有什么作用吗？为什么要这个字符串呢 如果不要这个字符串的话，那跟WM_USER、WM_APP都完全没有区别了，反正都是一种约定，完全也可以用WM_USER消息对应一个字符串，收到消息就默认知道了这个信息；再进一步讲，哪个消息不是一个信息？那还分什么字符串消息和WM_USER、WM_APP消息？

user: user-0
content: 引用 5 楼 user-2 的回复:字符串只是为了人能看懂理解的，系统并不需要这个东西，编号就是系统要的，有的话也有可能保存在注册表中，再进一步，你就算跟到字符串有什么作用吗？为什么要这个字符串呢、 可以用于程序对用户的提示啊

user: user-2
content: 注册消息只是告诉操作系统，我需要注册这个消息编号，有这个编号的发给我，至于叫什么并不重要

user: user-0
content: 引用 1 楼 user-2 的回复:消息怎么使用只有定义者可以指定，你想要知道就需要看代码，不是看编号就可以查到的 也就是说，真的只能知道这个编号，知道这个编号代表的字符串吗？

user: user-2
content: 消息怎么使用只有定义者可以指定，你想要知道就需要看代码，不是看编号就可以查到的