OnOK没有运行完成的话,窗口是不会消失的。
但是OnOK完成的话,窗口就关闭了,和对话框程序的框架是冲突的
我的理解是,你现在需要一个这样的程序,即使主窗口不在了它也能正确运行。
基于Dialog的程序框架不修改的话是无法满足这个要求,因为这个框架下,一旦主窗口被销毁,程序就退出了
修改程序框架,使得主窗口销毁以后程序还能继续运行,修改程序启动时入口点的DoModal,以及修改另一个对话框的打开方式(不用DoModal打开),手动添加消息循环
修改对话框关闭时的行为(正常情况下对话框关闭使得DoModal返回,现在要在需要退出程序的时候抛出WM_QUIT,否则消息循环不会结束,程序也无法退出。
要注意的地方就是,所有可能会导致“最后一个对话框消失”的地方,都要加上AfxPostQuitMessage,否则程序就会无法正常退出
全工程搜索“注意这里”四个字,可以看到我特别加上的注释
其他地方DoModal还是可以用的,归纳一下是,
DoModal函数在对话框关闭之前不会返回,
第一个不知道你想表达什么,第二默认的焦点的确是OnOK上,第三,重载 OnOk函数的意义在与你关闭对话框时刻,可以自己处理一些 *** 作,,比如,默认对话框OnOk函数是关闭对话框,你可以让他不关闭他,只需要写一个空的OnOk函数就可以了。
CDlg当中对应加自己的私有成员变量。对应Dlg上得控件,有方法用类向导,直接给其对应一个变量。或者自己手动添加也行。
CDlg中有CString私有成员之后,规范就是给出一个公有函数方法getString(CString& )向外提供数据
如下在CViewcpp中部分实现过程:
CDlg dlg;
CString str;
if(dlgDomodel() && dlgOnOk() == IDOK)
{
dlggetString (str); //这里就得出其数据,其中str也可以声明到CView类当中作为一个成员变量
}
当然,不那么麻烦就是都声明为公有成员变量,访问。这个不是很好的习惯
希望对你有帮助
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)