在C++ WIN32中 如何运行ON_MESSAGE的功能

2025-03-28 15:31:53
推荐回答(3个)
回答(1):

ON_MESSAGE是MFC里面的一个自定义消息映射宏,它的作用是绑定一个自定义的消息和该消息的响应函数。

函数原型:

ON_MESSAGE(message, memberFxn ) 参数:

message:消息的ID。

memberFxn :映射message的消息函数,该函数的类型必须是以下类型的

afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM)。

举例说明:

//.h

#define WM_MYMESSAGE (WM_USER + 100)

//.cpp

BEGIN_MESSAGE_MAP(CMyWnd2, CWnd)
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
END_MESSAGE_MAP()

LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(wParam);
UNREFERENCED_PARAMETER(lParam);
// Handle message here.
return 0;
}

回答(2):

1、ON_MESSAGE是MFC中定义的用于将自定义消息和消息处理函数关联起来的宏。如:
#define WM_MYMESSAGE (WM_USER + 1)
BEGIN_MESSAGE_MAP( CMyWnd, CMyParentWndClass )
    ON_MESSAGE( WM_MYMESSAGE, OnMyMessage )
END_MESSAGE_MAP( )

2、例程:

LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
    swtich(uMsg)
    {
        case MM_WIM_DATA:
            OnMmWimData(wParam,lParam);
            return ERROR_SUCCESS;
        default:
            return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
}

回答(3):

那就在对应窗口的窗口函数里面写啊:

LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
    swtich(uMsg)
    {
        case MM_WIM_DATA:
            OnMmWimData(wParam,lParam);
            return ERROR_SUCCESS;
        default:
            return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
}