MFC非模態對話框的創建及顯示

我們需要在原對話框CMFC_Kinect_TrackingDlg設計一個按鈕,點擊這個按鈕後彈出一個非模態對話框Color_Based_SettingDlg,

並且同時兩個對話框都是激活狀態,都可以自由操作,步驟入下:

1.在頭文件MFC_Kinect_TrackingDlg.h中包含Color_Based_SettingDlg.h

2.在MFC_Kinect_TrackingDlg.h中的類CMFC_Kinect_TrackingDlg添加一個Color_Based_SettingDlg對話框的成員變量

並聲明爲私有類型。

private:
	//new a Color_Based_SettingDlg obj pointor
	Color_Based_SettingDlg * m_pColorBasedSetting;

3.添加構造函數。如果cpp文件中函數太多,我們可以在Class View上半個視圖中找到CMFC_Kinect_TrackingDlg類(在MFC_Kinect_TrackingDlg.cpp中),再在下半個視圖中找到其構造函數雙擊,中間客戶區域即可馬上切到構造函數的實現處。在構造函數體中添加m_pColorBasedSetting= NULL;


4. 在構造函數下方添加一個析構函數,找尋位置和方法和構造函數一樣,另外,還需要在MFC_Kinect_TrackingDlg.h中對析構函數進行聲明,位置在構造函數下方。

//析構函數
CMFC_Kinect_TrackingDlg::~CMFC_Kinect_TrackingDlg()
{
	if( NULL != m_pColorBasedSetting)
		delete m_pColorBasedSetting;
}

5. 接下來就可以在對話框 CMFC_Kinect_TrackingDlg的消息處理函數OnBnClickedButtonColorSetting中創建非模態對話框

並添加要處理的函數。

	if(NULL == m_pColorBasedSetting)
	{
		m_pColorBasedSetting = new Color_Based_SettingDlg;
		//define Color_Based_SettingDlg dialog
		m_pColorBasedSetting-> Create( IDD_DIALOG_BASE_COLOR_SETTING,this); 
	}
	m_pColorBasedSetting->SetWindowPos( NULL, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE ); 
	m_pColorBasedSetting->ShowWindow( SW_SHOW ); 
    m_pColorBasedSetting->SetActiveWindow();




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