关于MFC对话框生成显示问题

shuiliuwuyu0708 2011-08-31 06:40:01
在写Dialog应用程序时,添加了两个对话框,一个是登陆对话框,另外一个是登陆后的对话框,请问怎么能让登陆对话框先显示呢?
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlq5800 2011-09-28
  • 打赏
  • 举报
回复
我的博客里面有写这个,你可以看看
1.新建一个登陆对话框,添加其对应的类CLoginDlg,然后在.cpp里面写你要完成的功能!
2.显示登陆对话框,在App类源文件中顶部声明#include"CLoginDlg.h",在InitInstance()方法中第一行开始加入如下代码:
CLoginDlg ld;
BOOL islogin = FALSE;

CLoginDlg cd;

while(!islogin){

if(ld.DoModal()==IDOK){

//可用cd.namestr和cd.passwordstr进行用户名和密码的验证,正确则将islogin置TURE,错误则作出提示。

}else{

return FALSE;

}

}
http://blog.csdn.net/wlq5800/article/details/6090059
向立天 2011-09-28
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
光流溢彩 2011-08-31
  • 打赏
  • 举报
回复
CLoginDlg dlg;
dlg.DoModal();
辰岡墨竹 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinatcp 的回复:]

有两个方法:
方法1. 修改 App (主应用程序) InitInstance方法,修改主dlg为指定打开的dlg。
CLoginDlg dlg;
m_pMainWnd = &dlg;


方法2. 在主对话框 OnInitDialog中,加入登录对话框弹出
CLoginDlg dlg;
dlg.DoModal();
[/Quote]

第一种方法不可取。首先MFC的对话框工程生成都是自带消息循环的模式对话框,根本不进入App的消息循环,它在InitInstance时直接返回FALSE。所以程序初始化后直接退出了。这样m_pMainWnd没有任何意义了。

比较好的方式是直接利用InitInstance。你在它里面先建立第一个Dialog并DoModal,在登录对话框的OnOk里返回一个值(最好不是0),这样这个值就会成为DoModal的返回值。在InitInstance里判断这个值,并DoModal你的主对话框。
huang_gen 2011-08-31
  • 打赏
  • 举报
回复
楼上正解
罗平 2011-08-31
  • 打赏
  • 举报
回复
有两个方法:
方法1. 修改 App (主应用程序) InitInstance方法,修改主dlg为指定打开的dlg。
CLoginDlg dlg;
m_pMainWnd = &dlg;


方法2. 在主对话框 OnInitDialog中,加入登录对话框弹出
CLoginDlg dlg;
dlg.DoModal();

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧