关于CSplashWnd的一个简单问题

duhaohao 2000-07-02 08:36:00
我新建了一单文档工程,在OnNewDocument()中加入一行代码:AfxMessageBox("aaaa"),程序下常运行,但再加入Splash Creen组件后(做一启动界面) 后程序运行时WINDOWS即告知执行了非法操作,我该怎么修改?
...全文
189 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjp 2000-07-02
  • 打赏
  • 举报
回复
引起非法操作的原因是在750毫秒内(参看下面的代码),你来不及处理AfxMessageBox,
SplashWnd已经被Destroy了。
窗口不存在了,OnNewDocument里的AfxMessageBox还在对此窗口进行操作(可参看
AfxMessageBox代码),当然就引起非法操作了。
将下列代码的750改为较大值我认为也不是一个好方法。最好是定义一个自定义消息,
当你的初始化过程完成后发消息给SplashWnd,让它DestroyWindow.
int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
// Set a timer to destroy the splash screen.
SetTimer(1, 750, NULL); //试一试将他改为7500,使你有足够的时间关闭
//AfxMessageBox生成的窗口。
...
}
crystal_zsp 2000-07-02
  • 打赏
  • 举报
回复
你应该把AfxMessageBox("aaaa")放入菜单下。或者加入TRACE("aaaa"),然后按F5运行再选择FILE中的NEW 。

16,466

社区成员

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

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

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