模态对话框
模态对话框在使用时其他页面被屏蔽不可以操作,只能在对话框中操作,在对话框关闭时才能对其他页面进行操作。
方式一:先定义一对话框,加入相应控件,添加一个对话框类,添加相应控件的控件变量(静态和动态),然后在需要弹出该对话框的地方定义一个该对话框的对象。调用对话框类的DoModal弹出该对话框进行操作。
CDlgAddDev dlg;
if(dlg.DoModal() == IDOK)
{...}
方式2:使用AfxMessageBox函数,给个简单的示例。
AfxMessageBox("请选择完整节点线路单元号!");
非模态对话框
非模态对话框弹出后依然可以对主窗口进行操作,最好的实例就是txt中的查找,查找的同时可以修改。同样定义一个对话框,添加一个对话框类。
CDlgSearch *pTD;
pTD=new CDlgSearch();
//pTD->pos=pos;
//pTD->ClassifyFlag=ClassifyFlag;
//pTD->Tree=&m_AlarmTree;
//pTD->List=&m_listInfo;
pTD->Create(IDD_Search);
pTD->ShowWindow(SW_SHOWNORMAL);
注释部分为相关变量,CDlgSearch 类名,IDD_Search对话框ID号。类似查找这样的,不只运用一次。不需要每次使用的时候都new CDlgSearch();可以直接弹出之前的对话框,清除内容即可。
if(pTD!=NULL)
{
pTD->m_UName="";
pTD->m_Unit="";
pTD->m_Line="";
pTD->m_Node="";
pTD->UpdateData(false);
pTD->ShowWindow(SW_SHOWNORMAL);
}
else
{
pTD=new CDlgSearch();
pTD->pos=pos;
pTD->ClassifyFlag=ClassifyFlag;
pTD->Tree=&m_AlarmTree;
pTD->List=&m_listInfo;
pTD->Create(IDD_Search);
pTD->ShowWindow(SW_SHOWNORMAL);
}
这里只对我之前做的简单小程序做了一个简单的叙述。