当然可以按照您的描述进行。您实际上不需要执行任何操作来为应用程序中的通信创建自定义消息:只需确保发送消息的代码和接收消息的代码就消息编号的实际含义达成一致,然后使用消息不与 Windows 使用的任何数字重叠的数字。有一个 RegisterWindowMessage() 函数,但只需要获取一个在整个操作系统中唯一的消息号,因此用于进程间通信。
实现这一点的最简单方法是在某处包含您的自定义消息编号的头文件,从 WM_USER 开始并向上编号,如下所示:
#define WM_FIRST_CUSTOM_MSG (WM_USER+0)
#define WM_SECOND_CUSTOM_MSG (WM_USER+1)
WPARAM 和 LPARAM 类型是在包含“windows.h”时定义的,因此在不同的系统上可以有不同的类型。对于 32 位操作系统,它们通常都是 32 位整数。如果您只是将消息用于测试目的,那通常就足够了,您可以在其中粘贴您想要的任何内容。但是,对于生产代码,您应该更加小心:WPARAM 真正用于“类整数”数据,而 LPARAM 用于“类指针”数据。例如,在 Win64 中,LPARAM 的长度足以容纳 64 位指针,但 WPARAM 仅容纳 32 位整数。为了传递比整数和指针更多的数据,我会使用 lParam 将指针传递给包含我所有参数的某种结构。
说了这么多,这听起来像是一种获取调试输出的复杂方法。您是否尝试过使用 OutputDebugString() API 调用?或者调试线程的 printf() 调用?