在VS2008中使用API函数ChangeDisplaySettings,在debug模式下改变屏幕分辨率设置1024*768成功,Release模式下改变屏幕分辨率1024*768设置,屏幕没有反应,RELEASE下单步调试,查看其ChangeDisplaySettings返回值为0,表示成功,但是屏幕没有反应,分辨率不变,屏幕是支持该分辨率的,可以手动设置为该分辨率,在debug模式下也是成功的,将程序打包成debug版本安装后运行改变屏幕分辨率设置也是成功的,将程序打包成Release版本安装后运行改变屏幕分辨率设置还是失败的,的确是有点怪,盼解惑?

解决方案 »

  1.   

    注意到了,当在debug模式下可以改变分辨率,但是关闭程序时编译器输出框有一段信息是这样:
    Warning: no document names in string for template #130.
    Warning: no document names in string for template #130.
    Warning: no document names in string for template #130.
    Warning: no document names in string for template #130.
    Warning: no document names in string for template #130.
    Warning: no document names in string for template #130.
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\winrnr.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\rasadhlp.dll”
    “HCtrlSystem.exe”: 已加载“E:\SRE430121\软件源代码\吊挂无线控制器PDA软件源代码V2.2\HCtrlSystem-net2005\bin\kerneldlls\CANETE.dll”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\OCCACHE\whip.ocx”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\heidiw.dll”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\msvcirt.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\dllongw.dll”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\mtlw.dll”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\whiptkw.dll”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\wininet.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\normaliz.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\iertutil.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\winmm.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\mfc42.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\odbc32.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\urlmon.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\msvcp60.dll”
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\odbcint.dll”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\gdiw.hdi”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\szbw.hdi”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\gdifontw.hdi”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\WINDOWS\system32\rblastw.hdi”,未使用调试信息生成二进制文件。
    “HCtrlSystem.exe”: 已加载“C:\Program Files\Common Files\System\Ole DB\sqloledb.rll”,未使用调试信息生成二进制文件。
    Warning: GetWindowMenuPopup failed!
    线程 'Win32 线程' (0xcc0) 已退出,返回值为 0 (0x0)。
    “HCtrlSystem.exe”: 已卸载“E:\SRE430121\软件源代码\吊挂无线控制器PDA软件源代码V2.2\HCtrlSystem-net2008\bin\SplashDll.dll”
    Warning: constructing COleException, scode = DISP_E_MEMBERNOTFOUND ($80020003).
    HCtrlSystem.exe 中的 0x7c80bef7 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012f25c 处的 COleException。
    线程 'Win32 线程' (0xd74) 已退出,返回值为 0 (0x0)。
      

  2.   

    请问通过这个Warning: constructing COleException, scode = DISP_E_MEMBERNOTFOUND ($80020003).怎么找到程序中的错误位置呢?