mfc 基于对话框程序,多界面之间切换的实现

mfc 基于对话框程序,多界面之间切换的实现,第1张

1.在CXXDlg类中添加另外唯睁芹3个对话框对象,在

OninitDialog

()中创建3个早缓对象的

非模态对话框

实例(去掉边框),可用

SetWindowPos

调整位置

2.在按钮的消息响应中分别show和hide刚才建立的窗口就可以达到楼主要求的效果了指毕,

1,新建对话框类ADlg,类BDlg,并且把属性设置为Child, border属性设置为None

2,把ADlg类,BDlg类的生命周期设置为主对话框成员函数,或者静态,或者全局,反正不要弄成局部变量就行

3,你可以在主对话框里面设置一个组合框 ID=IDC_Groupbox,为了的把它设置为新建对话框ADlg,BDlg的父窗口,新建对话框就在组合框上面了

4,在主窗口启动或者其他位置添加以下代码建立子对话框:

ADlg.Create(IDD_ADlg,GetDlgItem(IDC_Groupbox))

ADlg.ShowWindow(SW_HIDE)

BDlg.Create(IDD_BDlg,GetDlgItem(IDC_Groupbox))

BDlg.ShowWindow(SW_HIDE)

这样就建立上了,然后你直接用ShowWindow去控制两个对话框的显示和隐藏即可,比如在botton1里烂备面做

ADlg.ShowWindow(SW_SHOW)

BDlg.ShowWindow(SW_HIDE)

在botton2里面做

ADlg.ShowWindow(SW_HIDE)

BDlg.ShowWindow(SW_SHOW)

这样就实现了啊 要在一个botton里面做 你在外面正衡设置个标饥清毁记,函数里面做判断也可以啊,这样A,B两个窗体就是显示在主窗口上的,而非domodle那种单独一个对话框出来。

比如你想添加一个登录框:

首先,在资源视图里面,添加一个对话框,然后为这个对话框创建类文件(头文件和源文件),假设你的登录对话框的类名是 CLoginDlg;

然后,在你贴出的代码中,这句话 INT_PTR nResponse = dlg.DoModal()上一行写上如下代码:

CLoginDlg LoginDlg

if(LoginDlg.DoModal() == IDCANCEL) return FALSE

最后,构建你的工程颂扮,运行程序,看看效果。裂樱吵

注意:相关逻辑你需要在 CLoginDlg 中自己肆侍编写,以上步骤仅供参考!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12534809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存