WM_USER
摘自:http://baike.baidu.com/view/4146980.htm
为了防止用户定义的消息ID与系统的消息ID冲突,MS(Microsoft)定义了一个宏WM_USER,小于WM_USER的ID被系统使用,大于WM_USER的ID被用户使用。
所以自定义消息的步骤:
(一)先在头文件中定义自己消息的ID,如 #define WM_MY_FIRST_MESSAGE (WM_USER + 0x001)
(二)再声明自己的消息处理函数:afx_msg void OnMyFirstMessage();
(三)在CPP文件中添加消息映射宏:
在BEGIN_MESSAGE_MAP 和END_MESSAGE_MAP代码块中添加消息映射宏ON_MESSAGE,(建议添加到//}}后面)如下:
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
ON_MESSAGE(WM_MY_FIRST_MESSAGE, OnMyFirstMessage)
END_MESSAGE_MAP()
(四)最后定义消息处理函数:
OnMyFirstMessage()
{
// TODO: 在此添加控件通知处理程序代码
}
分享到:
相关推荐
WM_USER是Windows消息定义中的一个常量,表示用户自定义消息的起始值。通常,开发者会基于WM_USER生成自己的消息ID,以避免与系统内建消息冲突。以下是一步步创建和处理自定义消息的步骤: 1. **定义自定义消息**:...
在实际编程中,WM_USER宏常用于创建自定义的窗口消息,例如,当用户在某个控件上进行特定操作时,应用程序可以发送一个自定义的消息,然后在窗口过程函数中处理这个消息,执行相应的回调函数或者更新状态。...
**WM_COMMAND用户消息宏详解** 在Windows编程中,`WM_COMMAND`消息是窗口处理程序接收的一个关键消息,它表示用户与窗口控件交互的结果。这个消息宏被广泛用于响应菜单项的选择、控件的单击以及其他用户界面事件。...
2. **处理WM_COPYDATA消息**:当接收到WM_COPYDATA消息时,从COPYDATASTRUCT中提取数据,并进行相应的处理。 ```cpp bool MyClass::winEventFilter(MSG *msg, long *result) { if (msg->message == WM_COPYDATA) {...
WM_COPYDATA是Windows消息系统中的一个特定消息,它允许应用程序在不使用管道、套接字或其他复杂的IPC机制的情况下,进行简单的数据传递。在VS2005环境下,我们可以利用WM_COPYDATA消息来实现C#进程间通信的一个简洁...
WM_USER是一个常量,表示用户可定义消息的起始位置。 2. **声明响应消息的函数**: 自定义消息通常需要一个对应的函数来处理,例如`afx_msg LRESULT OnChlidFrameDBClick(WPARAM wParam, LPARAM lParam)`。`afx_...
GRID_USER_OUTER WM_USER+20 <br>//WM_GRID_USER_OUTER+1 -- WM_GRID_USER_OUTER+19内部使用 <br>//Grid往父窗口发的通知消息 //wParam --通知码/控件id组成 //lParam --与父窗口进行信息交流的...
在VC中,自定义消息通常通过`#define`预处理器指令来创建,其格式通常为`#define WM_YourMessageName WM_USER + N`,其中`N`是一个整数值,用于区分不同的自定义消息。例如,在给定的部分内容中,定义了一个名为`WM_...
这些消息的ID位于WM_USER和WM_APP之间的范围,或者通过RegisterWindowMessage函数注册。 Windows消息机制中有两种消息队列:系统消息队列和线程消息队列。系统消息队列接收来自硬件设备(如键盘和鼠标)的输入,并...
系统消息ID范围从0到WM_USER-1,而应用程序消息从WM_USER(0X0400)开始,直到0X7FFF。0XC000到0XFFFF用于注册的应用程序间通信的消息ID,通过`::RegisterWindowMessage`函数获取。 消息结构以MSG结构体来表示,...
这里`WM_USER_DEFINED_MESSAGE`是我们自定义的消息ID,它必须在`WM_USER`和`WM_USER+1000`之间,以避免与系统消息冲突。 接下来,在DLL中实现一个函数,用于发送自定义消息到目标EXE。例如: ```cpp extern "C" __...
这里的`WM_USER`是Windows消息的起始值,确保你的自定义消息不会与系统消息冲突。 2. **注册消息**:在窗口类的注册过程中,你需要告诉系统你的程序将处理哪些自定义消息。在`RegisterClass`函数中添加你的自定义...
2. wMsg参数:这是区分不同消息的常量值,每种特定的操作或事件都有其对应的预定义消息ID。例如: - WM_CREATE (0x01):窗口创建时发送。 - WM_DESTROY (0x02):窗口被销毁时发送。 - WM_MOVE (0x03):窗口位置...
当然,除了WM_USER自定义消息,还可以使用WM_COMMAND、WM_NOTIFY等预定义消息,或者通过MFC的成员函数如PostMessage、SendDlgItemMessage等进行通信。具体选择哪种方法取决于实际需求和场景。 在实际项目中,可能会...
- 自定义消息的ID应该位于WM_USER之后,以避免与系统定义的消息ID冲突。例如,你可以定义一个名为`WM_MY_CUSTOM_MESSAGE`的新消息,其值可以是`WM_USER + 100`。这样确保了不会覆盖已有的消息ID。在头文件中,定义...
它们通常以WM_USER作为起始值,并通过增量来创建唯一的消息ID,以避免与系统消息冲突。 二、在MFC中声明自定义消息 在MFC应用程序中,自定义消息的声明通常在消息映射类(CMessageMap)的头文件中完成。例如,我们...
当用户从菜单中选一项时,系统便会发出WM_COMMMAND消息,而对于系统菜单,则会发出WM_SYSCOMMAND消息,重载这个消息,并判断选中菜 单的ID值是否为用户设定值便可以了。 在Private声明部分,说明了过程,...
在VC++中,自定义消息通常使用`WM_USER`作为起始点,这是Windows预留给用户定义消息的范围。例如,我们可以定义一个名为`WM_MY_CUSTOM_MESSAGE`的消息,其值为`WM_USER + 100`。这样做的目的是避免与系统消息冲突。 ...