在MFC中,经常遇到弹出对话框进行信息交互,这时需要创建对话框。这种消息对话框分为两种:模态和非模态。
区别:简单的说:模态对话框是你在弹出对话框之后必须对其作出响应和操作之后才能对对话框之外的其他程序的进行操作;非模态对话框就是在弹出对话框之后可以对弹出的对话框和对话框之外的应用程序同时进行操作,互不影响。
模态对对话框的创建:在工程的资源视图中插入对话框,为其添加类;在父窗口的类声明中添加新插入对话框对象为类成员。可在父窗口的任何地方弹出对话框方法:DoModal()函数,eg:
//父窗口类的声明class DiaDlg{ //.... //....public: Dlg Dlg0; //插入对话框的类名 //.....}//父窗口类的任一函数xxx DiaDlg::xxx(){ //..... //.... //需要弹出对话框的位置 //弹出对话框 if(Dlg0.DoModal()) { } //....}利用DoModal()函数弹出的对话框为模态的。
非模态对话框的创建:在工程的资源视图中插入对话框,为其添加类;在父窗口的类声明中添加新插入对话框对象指针
为类成员。可在父窗口的任何地方弹出对话框方法步骤:
(1)为新插入对话框对象指针成员开辟一个对话框对象的内存;
(2)调用Create()函数创建一个对话框,这一步需要知道新插入对话框的ID;
(3)调用ShowWindow()函数显示对话框。eg:
//父窗口类的声明class DiaDlg{ //.... //....public: Dlg* Dlg0; //插入对话框的类名 //.....}//父窗口类的任一函数xxx DiaDlg::xxx(){ //... //需要弹出对话框的位置 //弹出对话框 Dlg0 = new Dlg0(); //开辟一个对象的内存 //这里IDD_xxx为新插入对话框的ID Dlg0->Create(IDD_xxx, NULL); //创建对话框 Dlg0->ShowWindow(TRUE); //显示对话框 //....}利用Create()函数创建的对话框为非模态的对话框。创建区别:模态对话框在其父窗口的类声明中的成员是对象,创建采用DoModal()函数;非模态对话框在其父窗口的类
声明中的成员是对象指针,创建采用Create()函数。
新闻热点
疑难解答