基于对话框;OnInitDialog()里面return FAlSE了怎么主框体还是显示了

zziilii 2012-08-31 06:37:45
想做一个登录框,模态的,程序运行时,先显示模式对话框,处理完登录信息之后才能进入主框架。
想完成登陆框里点取消变关闭程序,不现实主框体(处理登陆是否正确在login类里面)

// TODO: 在此添加额外的初始化代码
CDlogin dlg;
if (IDOK != dlg.DoModal())
return FALSE;
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}

为什么FALSE了主框体还是显示了?
...全文
524 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zziilii 2012-09-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

看CDialog::OnInitDialog 的 MSDN的说明

Return Value
Specifies whether the application has set the input focus to one of the controls in the dialog box. If OnInitDialog returns nonzero, Windows sets th……
[/Quote]

为什么找不到InitInstance()这个函数啊
zgl7903 2012-08-31
  • 打赏
  • 举报
回复
看CDialog::OnInitDialog 的 MSDN的说明

Return Value
Specifies whether the application has set the input focus to one of the controls in the dialog box. If OnInitDialog returns nonzero, Windows sets the input focus to the default location, the first control in the dialog box. The application can return 0 only if it has explicitly set the input focus to one of the controls in the dialog box.


他不是不显示对话框

结束对话框可以用 EndDialog 或者放在App::InitInstance中

BOOL CDlg_1App::InitInstance()
{
……
CLogonDlg logondlg;
if( logondlg.DoModal() != IDOK)
{
return FALSE;
}

CMainFrameDlg dlg;
dlg.DoModal();
……
}


如果在对话框的OnInitDialog


BOOL CDlg_1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
……
CLogonDlg logondlg;
if( logondlg.DoModal() != IDOK)
{
EndDialog(IDCANCEL);
return FALSE;
}

……
}


zziilii 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

如果doModal返回有问题的话

楼主可以在dlg里面设置个变量来判断嘛

CDlogin dlg;
dlg.DoModal()
if(dlg.bflag == FALSE)
{
return FALSE;
}
[/Quote]我的意思是想让dlg.bflag返回不是IDOK就不现实主框体
看不见的裂痕 2012-08-31
  • 打赏
  • 举报
回复
如果doModal返回有问题的话

楼主可以在dlg里面设置个变量来判断嘛

CDlogin dlg;
dlg.DoModal()
if(dlg.bflag == FALSE)
{
return FALSE;
}
zziilii 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

楼主点击了 右上角的那个X, 不就关闭对话框了,然后返回false。


为什么要再次用EndDialog(0) 来关闭对话框。

还有我发现不少程序, 窗口不见了,但是任务管理器里依然有

不是黑客软件什么的,就是我们一般用mfc开发的。

我很奇怪 wm_close到底能否彻底关闭基于对话框工程的程序!!!!



引用 1 楼 的回复:

EndDial……
[/Quote]我意思是在登陆模式对话框里面点取消或者“X”登陆对话框会关闭,而且主窗口不出现
liulin2021 2012-08-31
  • 打赏
  • 举报
回复
楼主点击了 右上角的那个X, 不就关闭对话框了,然后返回false。


为什么要再次用EndDialog(0) 来关闭对话框。

还有我发现不少程序, 窗口不见了,但是任务管理器里依然有

不是黑客软件什么的,就是我们一般用mfc开发的。

我很奇怪 wm_close到底能否彻底关闭基于对话框工程的程序!!!!



[Quote=引用 1 楼 的回复:]

EndDialog(0);
[/Quote]
schlafenhamster 2012-08-31
  • 打赏
  • 举报
回复
EndDialog(0);

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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