MFC中窗口的弹出模式
MFC中窗口的弹出模式分为两种,一种是弹出之后不能早操作其他的窗口的模式,称为模式弹出框。一种是弹出之后换可以操作其他窗口的模式称为非模式弹出框。模式弹出框类似于一些软件的登录窗口。而非模式弹出框类似于QQ的聊天窗口。
以下为模式对话框和非模式对话框弹出的例子:
首先创建一个主界面,导入弹出框对应的.h文件。界面如下:
模式弹出框(点击模式弹出框)
模式弹窗框时候需要创建一个弹出对话框的类对象,通过类对象的调用DoMode()函数弹出对话框。返回值整数值,指定了传递给CDialog::EndDialog 的nResult参数值。该函数用于关闭对话框。如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABORT。
代码:对话框类为CDoMode
void C模式弹出框Dlg::OnBnClickedDomode()
{
// 模式对话框弹出,弹出对话框之后,不能操作其他的界面。只能操作当前弹出的窗口
CDoMode doMode;//创建对话框对象
doMode.DoModal();//弹出对话框
}
弹出结果:
非模式弹出框(点击非模式弹出框)
模式对话框的弹出需要new一个对话框类的指针对象,将其存储在堆内存中。之后通过Create 函数创建一个弹出窗口。创建完成之后使用showWindow函数,参数为SW_SHOW将其显示出来。
代码:对话框类为CNoDoMode
void C模式弹出框Dlg::OnBnClickedNodomode()
{
// 非模式对话框,对话框弹出之后,可以对其他界面进行操作。
CNoDoMode * noDoMode = new CNoDoMode();//new一个CNoDoMode指针对象
noDoMode->Create(IDD_NOMODEL,this);
noDoMode->ShowWindow(SW_SHOW);
}
弹出结果: