标准SDI应用程序,加入启动画面后,初始化函数中的AfxMessageBox("")与启动画面同时关闭?为什么?

eeixy2000 2004-04-10 11:24:30
我用VC6 的ClassWizard创建标准的SDI应用程序(视图类),然后使用Project>>...增加标准的Splash Screen组件到程序中(全都按照默认设置),现在问题出现了:
我在视图类(CFormView)的初始化函数中添加如下代码:
AfxMessageBox("OOO");
但是该提示语对话框根本不要我点击"确定"按钮就和启动画面一起自动关闭.
请问这是为什么?
void CTKM8View::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit(FALSE);

// 连接到数据库
LinkToDatabase();
...............................
AfxMessageBox("OOO");
}
...全文
43 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhangcrony 2004-04-10
语句的地方不对吧?放到OnPaint函数体里面看看!
  • 打赏
  • 举报
回复
skyxie 2004-04-10
从设计上来说,我觉得你应该让Splash窗口消失之后再弹出那个MessageBox
  • 打赏
  • 举报
回复
zhujianping_es 2004-04-10
Hehe !
Easy !Just change:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
........
CSplashWnd::ShowSplashScreen(this);
}

to this:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
........
CSplashWnd::ShowSplashScreen(NULL);
}


That would be Ok!

  • 打赏
  • 举报
回复
关注
  • 打赏
  • 举报
回复
smallbull 2004-04-10
应该不是加Splash的问题
  • 打赏
  • 举报
回复
yxlijinzhu 2004-04-10
可能是由于线程方面的原因.
因为, 启动画面是异步的, 而MessageBox会阻断调用线程, 但他自己有自己的消息泵, 启动画面返回是可能会对调用线程有一些影响, 从而间接影响了MessageBox, 因为他们都是在一个线程中产生的(你的程序是这样的吧).

具体我也不清楚, 只是感觉. 帮你顶一下.

但是要解决这个问题, 你可以另开一个线程来启动那个启动画面, 这样虽然很笨, 但我想再也不会出现你的那个问题了.
  • 打赏
  • 举报
回复
eeixy2000 2004-04-10
但是如果不加启动画面,在同样的地方使用AfxMessageBox("OOO");就不会出现问题
  • 打赏
  • 举报
回复
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2004-04-10 11:24
社区公告

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