MFC的自定義消息的定義與使用


  自定義消息的響應和資源消息的響應有很多類似之處;資源消息的響應是以資源的ID號作為標識的;自定義的消息要自己聲明消息ID。

一.           定義:

第一步要聲明消息:

#define WM_MYMSG  WM_USER+200

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

DECLARE_MESSAGE_MAP()

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

afx_msg LRESULT MyMsgHandler(WPARAM,LPARAM);

在.cpp中做的工作:

第四步要實現消息映射:

BEGIN_MESSAGE_MAP()

ON_MESSAGE(WM_MYMSG,OnMyMsgHandler)

END_MESSAGE_MAP()

第五步要實現消息處理函數(當然可以不實現):

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

{

AfxMessageBox("Hello,World!");

return 0;

}

二.           使用

1.      如果該自定義消息所在的類是有CWnd派生出來的,且在本類中調用,那么我們可以調用CWnd::SendMessage()函數,具體定義為:

LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );

此時我們只需要在引發消息的地方添加如下代碼:

SendMessge(WM_MYMSG,0,0);

如果我們想在不同的情況下發送用戶消息,我們只需要將SendMessage的后兩個參數wParam,lParam加以標識即可;在消息處理函數,寫一個if條件語句(或switch語句)就可以了;將不同情況下的用戶消息區分開;

  例如看下面的例子:  

  ①加入消息響應函數實現
  在CCDlg類的實現文件中加入消息響應函數的實現部分,代碼如下:
    void CCDlg::Customize(WPARAM wParam, LPARAM lParam)   {         CString strTittle;         strTittle.Format("自定義消息參數:x=%d,y=%d",wParam,lParam);         SetWindowText(strTittle);   }   此函數的作用是將鼠標的位置信息顯示在對話框的標題欄部分。   ②.菜單部分
  在主框架的“幫助”主菜單中加入“自定義消息”子菜單,其ID設為ID_CUSTOMIZE,通過類向導響應該命令,函數名默認。其函數體如下:
    void CMainFrame::OnCustomize()   {         // TODO: Add your command handler code here         POINT pos;         //將消息參數定義為屏幕坐標值         GetCursorPos(&pos);         pdlg->SendMessage(WM_CUSTOMIZE,(UINT)pos.x,pos.y);//這里就是將(UINT)pos.x,pos.y(注:它們分別對應①中消息響應函數的兩個參數WPARAM     wParam和LPARAM lParam)兩個參數分別傳給消息響應函數。   }  

2.      如果不在本類中響應自定義消息;那么我們只能用win32 的API函數;例如,當自定義消息在CMainFrame中,而觸發消息的地方不在CMainFrame類中,那么我們可以用如下語句:

::SendMessge(::AfxGetMainWnd()->m_hWnd,WM_MYMSG,0,0);

 

 

相關內容網址:

http://www.cnblogs.com/smartvessel/archive/2011/07/18/2109472.html

http://blog.csdn.net/penpenandtongtong/article/details/18598907

http://www.oschina.net/question/565065_72596

http://blog.chinaunix.net/uid-24459558-id-299010.html


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



MFC激活自定義消息 MFC自定義消息 MFC中自定義消息 MFC中 自定義消息 MFC自定義消息 MFC---自定義消息 MFC中自定義消息 MFC自定義消息 MFC自定義消息 MFC添加自定義消息
 
粤ICP备14056181号  © 2014-2020 ITdaan.com