WM_USER

  为了防止用户定义的消息ID与系统的消息ID冲突,MS(Microsoft)定义了一个宏WM_USER,小于WM_USER的ID被系统使用,大于WM_USER的ID被用户使用。

MSDN定义:

  The WM_USER constant is used by applications to help define private messages, usually of the form WM_USER+X, where X is an integer value.

  #define WM_USER 0x0400RemarksThere are five ranges of message numbers:

  

RangeMeaning
0 through WM_USER – 1Messages reserved for use by the system.
WM_USER through 0x7FFFInteger messages for use by private window classes.
WM_APP through 0xBFFFMessages available for use by applications.
0xC000 through 0xFFFFString messages for use by applications.
Greater than 0xFFFFReserved by the system for future use.

  Message numbers in the first range (0 through WM_USER – 1) are defined by the system. Values in this range that are not explicitly defined are reserved for future use by the system.

  Message numbers in the second range (WM_USER through 0x7FFF) can be defined and used by an application to send messages within a private window class. These values cannot be used to define messages that are meaningful throughout an application, because some predefined window classes already define values in this range. For example, predefined control classes such as BUTTON, EDIT, LISTBOX, and COMBOBOX may use these values. Messages in this range should not be sent to other applications unless the applications have been designed to exchange messages and to attach the same meaning to the message numbers.

  Message numbers in the third range (0x8000 through 0xBFFF) are available for application to use as private messages. Message in this range do not conflict with system messages.

  Message numbers in the fourth range (0xC000 through 0xFFFF) are defined at run time when an application calls the RegisterWindowMessage function to retrieve a message number for a string. All applications that register the same string can use the associated message number for exchanging messages. The actual message number, however, is not a constant and cannot be assumed to be the same between different sessions.

  Message numbers in the fifth range (greater than 0xFFFF) are reserved for future use by the system.

  QuickInfoWindows NT: Requires version 3.1 or later.

  Windows: Requires Windows 95 or later.

  Windows CE: Requires version 1.0 or later.

  Header: Declared in winuser.h.

所以自定义消息的步骤:

  (一)先在头文件中定义自己消息的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: 在此添加控件通知处理程序代码

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值