建了一個基於對話框的MFC程序,在主對話框中添加tabcontrol控件,又新建了兩個Dialog(CDialog1和CDialog2),將它們設爲tabcontrol控件的子對話框。函數
目的:兩個子對話框之間傳遞消息,子對話框與主對話框傳遞消息。this
第一步: 定義消息.
在目標窗口類的頭文件或者stdafx.h中添加: #define WM_MY_MESSAGE (WM_USER+100); 推薦用戶自定義消息至少是WM_USER+100,由於不少新控件也要使用WM_USER消息。.net
第二步: 在目標類頭文件的AFX_MSG塊中說明消息處理函數: afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);對象
[cpp] view plain copyblog
第三步:在目標類源文件cpp中,使用ON_MESSAGE宏指令將消息映射到消息處理函數中。get
[cpp] view plain copyit
第四步: 實現消息處理函數。class
在目標類源文件cpp中,該函數使用WPRAM和LPARAM參數並返回LPESULT。 程序
[cpp] view plain copyim
第五步:發送消息時,在源地址類CDialog2的CPP文件中(如一個Button),調用函數PostMessage或SendMessa
ge發送消息。PoseMessage(WM_MY_MESSAGE,O,O); SendMessage(WM_MY_MESSAGE,O,O);
假如主對話框的類名:CSecondShimDlg,兩個子對話框的類名CDialog1和CDialog2;
. 要實現兩個子對話框之間進行通訊(CDialog2向CDialog1發送消息,目標類即爲CDialog1),則在CDialog2源文件中的發送函數應該這麼寫:
[cpp] view plain copy
要實現CDialog2向主對話框CSecondShimDlg發送消息(目標類即爲CSecondShimDlg),則:
[cpp] view plain copy
或者:
[cpp] view plain copy
這樣便可完成對話框之間的消息傳遞。