大约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",如果没有显示这个更新的机器上使用没有问题,只要有这个的就会出错。

解决方案 »

  1.   

    CreateDialog
    找到他具体在那个头文件和哪个dll模块中,看看那个文件和那模块有没有变
      

  2.   

    hInstance?确定它是正确的Resource Instance Handle
      

  3.   

    如果hInstance不正确那个CreateWindow也应该返回错误吧?现在那个CreateWindow返回的正确,并且窗口能显示出来。PS:不过奇怪的是,主窗口的CreateWindow正确,但是后面生成按钮的CreateWindow确不正确。明天我到公司跟以下hInstance,看看这个是不是有错~谢谢。
      

  4.   

    我主窗口使用的控件只有 STATIC msctls_progress32 BUTTON COMBOBOX  EDIT,其他的没有使用。另外我查了一下KB923191,里面更新了comctl32.dll文件,更新前版本是2180,更新后是2982. 现在是在2180版本下肯定什么问题没有,但是在2982下就出错。