我先前按照网上的单一创建教程,在mfc工程中生成非模态对话框,但是一直出现问题,具体问题是什么已经记不起来了。我把正确的创建方式写在这里。
我的主窗口类为CADlg,子窗口类为CBDlg,我想在点击类CADlg窗口的一个控件的时候以非模态方式弹出关联了类CBDlg的子窗口。具体如下:
1、为子窗口添加类CBDlg,并在主类CADlg的头文件中包含类CBDlg的头文件;
2、在主类CADlg的头文件中添加两行代码:
class CBDlg;
class CADlg : public CDialogEx
{
// 构造
public:
CADlg(CWnd* pParent = NULL);// 标准构造函数
~CADlg();//析构函数
//用来创建细节显示的非模态对话框
CBDlg *Bdlg;
}
3、在主类CADlg的cpp文件中的函数CADlg::CADlg(CWnd* pParent /*=NULL*/): CDialogEx(CADlg::IDD, pParent)
中添加初始化代码:
CADlg::CADlg(CWnd* pParent /*=NULL*/)//主窗口显示前的初始化
: CDialogEx(CADlg::IDD, pParent)
{
Bdlg = NULL;
}
4、在主类CADlg的cpp文件中的对应的控件响应函数中添加如下代码:
5、完成!if (dlg== NULL)//判定对话框是否有所指向
{
dlg= newCBDlg();//指向一个非模对话框示例
dlg->Create(此处填入对应的子窗口ID, this);//创建
}
dlg->ShowWindow(SW_SHOW);//显示