在最近中兴捧月的竞赛和帮同学解决一个对话框中动态显示数据时都用到了非模式对话框。现在对非模式对话框做个小结。
非模式对话框,说简单点就是在一个主对话框中弹出一个新对话框时,仍然可以对原来的主对话框进行相关操作,不一定要把当前新生产的对话框叉掉。(模式对话框就必须把后来新生产的对话框叉掉,才能获得原对话框焦点,进行操作)
创建非模式对话框有两种情形:
情形一、在资源视图里手动添加了一个Dialog,同时赋以对应的ID.
情形二、不用在资源视图里手动添加Dialog.
(1)先说情形一:
情形一又可分为简单做法和复杂做法。(此处的复杂做法可以应用于情形二。)
创建一个基于对话框的project.:TestDlg,然后在资源视图里插入一个新的Dialog.点击类向导(Ctrl+W),生成一个新类CNonModalDlg,该对话框对应的ID是IDD_DIALOG2;
【简单做法】
在TestDlg对话框的界面上增加按钮,在对应的消息映射函数里写上如下语句
{
CNonModalDlg * pNonMdlg = new CNonModalDlg;//新对话框类对象指针
pNonMdlg->Create(IDD_DIALOG2); //调用默认的Create方法
pNonMdlg->ShowWindow(SW_SHOW); //显示对话框SW_SHOW,隐藏用SW_HIDE
}
此时可以生成多个非模式对话框
【复杂做