1. 程式人生 > >VC中自定義訊息ON_MESSAGE的用法

VC中自定義訊息ON_MESSAGE的用法

在一個對話方塊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

注:若有錯誤,歡迎指正。