Windows XP更新安全补丁后我的程序不能使用了,好像是CreateDialog这块出错,大家帮我看看。

shanminmin 2006-11-10 04:24:16
大约10月份的一个更新,更新后我做的程序就不能运行了,后来我查了一下,是一个CreateDialog出现错误。
代码如下:

//创建应用程序主窗口
hMainWnd=CreateWindow(L"mt",L"mt",WS_POPUPWINDOW,0,0,FORM_WIDTH,FORM_HEIGHT,NULL,NULL,hInstance,NULL);
if(hMainWnd==NULL)
{
MessageBox(NULL,L"创建主窗口时发生错误!",L"错误信息",MB_OK|MB_ICONSTOP);
return false;
}

//显示欢迎屏
hSplash=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_SPLASH),hMainWnd,(DLGPROC)SplashDlgProc);
//DWORD err=GetLastError();
if(hSplash==NULL)
{
MessageBox(NULL,L"创建Splash窗口时发生错误!",L"错误信息",MB_OK|MB_ICONSTOP);
return false;
}

程序的大致意思是创建主窗口时显示一个splash屏幕显示进入的进度,以前完全正常,现在在hSplash=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_SPLASH),hMainWnd,(DLGPROC)SplashDlgProc); 返回的hSplash是NULL,但是DWORD err=GetLastError();取回的却是0。

实在是搞不明白,请大家讨论一下。

PS:那个更新在系统还原中显示"Software Distribution Service 2.0",如果没有显示这个更新的机器上使用没有问题,只要有这个的就会出错。
...全文
240 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanminmin 2006-11-13
  • 打赏
  • 举报
回复
我主窗口使用的控件只有 STATIC msctls_progress32 BUTTON COMBOBOX EDIT,其他的没有使用。另外我查了一下KB923191,里面更新了comctl32.dll文件,更新前版本是2180,更新后是2982. 现在是在2180版本下肯定什么问题没有,但是在2982下就出错。
shanminmin 2006-11-13
  • 打赏
  • 举报
回复
刚刚测试结果为,打上KB923191补丁后出现这个问题。难道大家都没有遇到嘛?
shanminmin 2006-11-12
  • 打赏
  • 举报
回复
如果hInstance不正确那个CreateWindow也应该返回错误吧?现在那个CreateWindow返回的正确,并且窗口能显示出来。

PS:不过奇怪的是,主窗口的CreateWindow正确,但是后面生成按钮的CreateWindow确不正确。

明天我到公司跟以下hInstance,看看这个是不是有错~谢谢。
DentistryDoctor 2006-11-12
  • 打赏
  • 举报
回复
hInstance?

确定它是正确的Resource Instance Handle
shanminmin 2006-11-12
  • 打赏
  • 举报
回复
如果系统中的文件变化后,为什么其他的程序没有问题,只有我的程序有问题阿。另外,在其他机器上装的仅仅是编译完成的,我想和头文件没有关系。
happyness44 2006-11-10
  • 打赏
  • 举报
回复
CreateDialog
找到他具体在那个头文件和哪个dll模块中,看看那个文件和那模块有没有变

15,976

社区成员

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

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