MFC开发IM--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();