MFC與C#處理自定義消息的區別

在對接手寫板處理手寫板的消息時遇到的問題記錄如下:

MFC處理自定義消息的邏輯:

第一步:聲明自定義消息

#define   WM_MYMSG WM_USER + 200 //WM_USER爲系統定義好的值爲0x0400

第二步:在類聲明中聲明消息映射

DECLARE_MESSAGE_MAP()

第三步:在類聲明中聲明消息處理函數

例如:afx_msg LRESULT MyMsgHandler(WPARAM,LPARAM);

第四步:要實現消息映射

BEGIN_MESSAGE_MAP()

ON_MESSAGE(WM_MYMSG,OnMyMsgHandler)

END_MESSAGE_MAP()

第五步:實現消息處理函數

LRESULT CMainFrame::OnMyMsgHandler(WPARAM w,LPARAM l)

{

AfxMessageBox("Hello,World!");

return 0;

}

C#處理自定義消息的邏輯:

第一步:自定義消息

const int WM_MYMSG = 0x0400 + 200

第二步:重載消息處理函數

protected override void WndProc(ref Message m)

{

base.WndProc(ref m);
}

第三步:在消息處理函數中,處理自定義消息

protected override void WndProc(ref Message m)

{

if(m.msg == WM_MYMSG)

{

console.WriteLine("catch mymsg!");
}

base.WndProc(ref m);
}

心得: MFC處理自定義時,首先需要將消息和消息處理函數綁定,當自定義消息過來時。有MFC調用消息處理函數。

C#則需要自己在消息循環中取獲取自定義消息再處理。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章