MFC對話框之間自定義消息傳遞

網上講述的都是基於框架類得消息的傳遞,本文所講述的是兩個對話框之間自定義消息的傳遞。app

首先完成須要接受消息的類中消息的自定義:框架

MFC 自定義消息四步曲函數

1. 定義全局變量或宏
#define WM_MyMessage (WM_USER + n)code

n爲數字到少大於100
或者用 const UINT WM_MYMESSAGE = WM_USER + n變量

通常能夠加在stdafx.h 或resource.h 或*.app.h中。文件

他們都是全局變量頭文件因此均可以.co

 

2. 在所在類的*.H文件增長消息函數聲明.數字

 protected:消息

 //{{AFX_MSG(CChildView)new

afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

//}}AFX_MSG
DECLARE_MESSAGE_MAP()

};

 

3.在所在類的實現文件*.CPP文件中增長消息映射和實現消息處理函數

BEGIN_MESSAGE_MAP(CChildView,CWnd )

 //{{AFX_MSG_MAP(CChildView)

ON_MESSAGE(WM_MyMessage, OnMyMessage)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

也就是說WM_MyMessage消息對應OnMyMessage函數

LRESULT 類名::OnMyMessage(WPARAM wParam, LPARAM lParam)

 {

//TODO: Add your message handle code

return 0;

}

其次是發送消息,分類內和類外兩種狀況。

假定對話框B類中定義了消息WM_MyMessage,在B類得其餘函數中可直接使用

4.SendMessage(WM_MyMessage,wPARAM,lPARAM);

 

若是是對話框A類向對話框B類發送信息,則相對比較麻煩。咱們假定A爲主對話框,則須要在A類加一個成員變量 B * pB;在A類得初始化函數中添加以下代碼pB = new B;pB->Creat(對話框B的IDD);這樣便完成了對話框B的建立(記住必定是非模態的,若是是模態的對話框是不能傳遞消息的),而後在A類的函數中就能夠經過下面的語句來傳遞消息了

4.::SendMessage(pB->m_hWnd,WM_MyMessage,0,0);

這樣就能夠隨時給對話框B發送消息,對B的控件進行控制了。

相關文章
相關標籤/搜索