VC中自定义消息ON_MESSAGE的用法

时间:2021-07-19 20:01:21

在一个对话框mark.cpp中,自定义一个消息,

首先在mark.cpp中添加

#define WM_DATA   WM_USER+100  

之后再mark.h里

protected:


// Generated message map functions
//{{AFX_MSG(MARK)
afx_msg void OnStart();
afx_msg void OnStop();
virtual BOOL OnInitDialog();
virtual void OnOK();
//}}AFX_MSG
afx_msg LRESULT OnData(WPARAM wParam,LPARAM lParam);//添加声明
DECLARE_MESSAGE_MAP()

再在mark.cpp中添加

BEGIN_MESSAGE_MAP(MARK, CDialog)
//{{AFX_MSG_MAP(MARK)
ON_BN_CLICKED(IDC_START, OnStart)
ON_BN_CLICKED(IDC_STOP, OnStop)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_DATA,OnData)      //此处为添加的自定义消息,用OnData函数来相应WM_DATA消息

再添加一个OnData的函数

LRESULT MARK::OnData(WPARAM wParam, LPARAM lParam)

利用:

void CALLBACK ADHandler( UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1,DWORD dw2)
{
HWND hwnde=GetForegroundWindow();
::PostMessage(hwnde,WM_DATA,0,0);           //这样就能调用OnData了
}

上面用到的是一个回调函数,在写程序的时候调用这个回调函数就行了,这样就能相应WM_DATA的消息了。

参考资料;

http://blog.****.net/nnsword/article/details/2976844   这里说LRESULT MARK::OnData(WPARAM wParam, LPARAM lParam)的参数和返回值可要可不要

http://www.cppblog.com/xpzhou/archive/2007/04/18/22185.html

注:若有错误,欢迎指正。