您的位置:首页 > 其它

VC中自定义消息ON_MESSAGE的用法

2012-07-16 20:58 260 查看
在一个对话框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.csdn.net/nnsword/article/details/2976844 这里说LRESULT MARK::OnData(WPARAM wParam, LPARAM lParam)的参数和返回值可要可不要
http://www.cppblog.com/xpzhou/archive/2007/04/18/22185.html
注:若有错误,欢迎指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: