INFO: Use ON_MESSAGE() Macro to Map Less-Common Messages (99848)



The information in this article applies to:

  • The Microsoft Foundation Classes (MFC), when used with:
    • Microsoft C/C++ for MS-DOS 7.0
    • Microsoft Visual C++ for Windows, 16-bit edition 1.0
    • Microsoft Visual C++ for Windows, 16-bit edition 1.5
    • Microsoft Visual C++ for Windows, 16-bit edition 1.51
    • Microsoft Visual C++ for Windows, 16-bit edition 1.52
    • Microsoft Visual C++, 32-bit Editions 1.0
    • Microsoft Visual C++, 32-bit Editions 2.0
    • Microsoft Visual C++, 32-bit Editions 2.1
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Editions 5.0
    • Microsoft Visual C++, 32-bit Editions 6.0
    • Microsoft Visual C++ .NET (2002)

This article was previously published under Q99848

SUMMARY

The Microsoft Foundation Class Library includes macros that an application can include in the message map of a CWnd or CWnd derived object.These macros, such as ON_WM_PAINT() and ON_WM_SIZE(), map common messages to default handler functions. The Microsoft Foundation Class Library provides macros for all standard window messages. To process user-defined message or less-common window messages (like WM_COMMNOTIFY), use the ON_MESSAGE() macro. The ON_MESSAGE macro must be used in a CWnd derived class. For example, it cannot be used in a CWinApp class or a CDocument class because neither of these classes is derived from CWnd.

MORE INFORMATION

Here's an example of how an application could use ON_MESSAGE:
  // inside the class declaration
  afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

  ...

  #define WM_MYMESSAGE (WM_USER + 100)

  BEGIN_MESSAGE_MAP(CMyWnd, CMyParentWndClass)
     ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
  END_MESSAGE_MAP()

  LRESULT CMyWnd::OnMyMessage(WPARAM WParam, LPARAM LParam)
  {
     return (LRESULT)0;
  }
				
The function specified by the second parameter of the ON_MESSAGE macro must be a function that takes two parameters, a WPARAM and an LPARAM, and returns a LRESULT. For more information about the ON_MESSAGE() macro, see Technical Note #6 in the MFC Tech Notes Help file distributed with Microsoft Visual C++ version 1.0 and in the MFC Technical Notes included in the Visual C++ Books Online. Or search the Visual C++ Books Online on the keyword "ON_MESSAGE."

Modification Type:MajorLast Reviewed:12/11/2003
Keywords:kbArchitecture kbinfo KB99848