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();




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