为什么会这样呢?????????????

hucsdn 2003-05-30 11:09:42
我做了一个MDI程序,弹出时有一logon对话框提示输密码。
现在我加了一个splash闪屏,用的是VC中提供的标准splash,
但是它是自动在CMainFrame::OnCreate函数中加入显示splash代码,在程序主框架出来后才显示,我就将这段代码移到CdemoAPP::InitInstance函数里,这样在程序主框架出来前就可以显示splash,但是每次到调用logon对话框登录时就会出错,怎么回事呢?我的调用logon对话框那段代码是在CMainFrame::OnCreate中的。

还有我现在出现logon登录框是在程序主框架出来前就要求登录,我想在程序主框架出来后才出现logon登录框,以便让用户能看见程序主框架,那我该把这段代码放在什么地方呢?

我想这个问题应该不难,只不过我太笨而已,请各位高手指点。
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hucsdn 2003-05-31
  • 打赏
  • 举报
回复
我搞定了:)

我以前把登陆框放在CMainFrame::OnCreate是错的,应该放在CdemoAPP::InitInstance函数的末尾,这就行了,现在两个问题都解决了。cxjlw(老为) 的指示对我有很大的提示作用
hucsdn 2003-05-31
  • 打赏
  • 举报
回复
to: common_man(谢安王导)

我原来就是你说那样做的,没错,我加上splash后也没错,只不过登陆筐和splash的显示顺序不是我想要的,我把splash梛到CdemoAPP::InitInstance后,也能显示出来,不过后来在显示登陆框的时候就出错了。



to: cxjlw(老为)
你说得对CSplashWnd::ShowSplashScreen(CWnd* pParentWnd);是有一个参数
但是我把它梛到CdemoAPP::InitInstance时已经把参数改为CSplashWnd::ShowSplashScreen(NULL);了,也能够在主框架出来以前显示不过后来在显示登陆框的时候就会错了。




cxjlw 2003-05-30
  • 打赏
  • 举报
回复
如果你想在主框架出来之后登陆,那么将上面这段程序改为:
CdemoAPP::InitInstance(
。。。

m_pMainFrame->ShowWindow(SW_HIDE);//隐藏主框架

//显示闪屏画面
CSplashWnd::ShowSplashScreen(m_pMainFrame);

//显示主框架
m_pMainFrame->ShowWindow(m_nCmdShow);

//登陆
if(LOGINDLG.DoModal()!=IDOK) // LOGIN failed
{
// exit
}
cxjlw 2003-05-30
  • 打赏
  • 举报
回复
楼上这位仁兄回答了一半。下面就你的第一个问题说说自己的意见:
CSplashWnd::ShowSplashScreen(CWnd* pParentWnd);
有一个参数,他表示splash控件的父窗口指针,而且的确在创建时用到。
所以必须在主框架窗口创建之后才能创建和显示splash. 我想你按照下面的步骤做试试看:

CdemoAPP::InitInstance(
。。。

m_pMainFrame->ShowWindow(SW_HIDE);//隐藏主框架
//登陆
if(LOGINDLG.DoModal()!=IDOK) // LOGIN failed
{
// exit
}
//显示闪屏画面
CSplashWnd::ShowSplashScreen(m_pMainFrame);
//显示主框架
m_pMainFrame->ShowWindow(m_nCmdShow);
common_man 2003-05-30
  • 打赏
  • 举报
回复
CMainFrame::OnCreate(。。。)
{
....
if(LOGINDLG.DoModal()!=IDOK) // LOGIN failed
{
return FALSE;//退出程序
}
...
}
common_man 2003-05-30
  • 打赏
  • 举报
回复
但是每次到调用logon对话框登录时就会出错,怎么回事呢?我的调用logon对话框那段代码是在CMainFrame::OnCreate中的。
CMainFrame::OnCreate(。。。)
{
....
if(LOGINDLG.DoModal()!=IDOK) // LOGIN failed
{
return FALSE;
}
...
}
Skt32 2003-05-30
  • 打赏
  • 举报
回复
CdemoAPP::InitInstance(
。。。

m_pMainFrame->ShowWindow(SW_HIDE);

if(LOGINDLG.DoModal()!=IDOK) // LOGIN failed
{
// exit
}

m_pMainFrame->ShowWindow(SW_NORMAL);
...

15,979

社区成员

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

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