我有一个使用winapi功能的程序。当它在WinXP(32位)或Win7(64位)上运行时一切正常。但是在Win8(64位)上有一个错误:有时程序挂起在这个代码行上
HDC hDisplay = CreateDC("DISPLAY", NULL, NULL, NULL);
可能是什么原因?
P.S。它是在WinXP 32位的MSVC 2005中为Win32平台构建的。
答案 0 :(得分:1)
尝试:
CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)
答案 1 :(得分:0)
我已经设法为64位平台重建程序,现在可以正常工作。
答案 2 :(得分:0)
虽然这个问题很老,但今天我们也遇到了类似的问题。
我们有一些代码试图以此方式查询打印机:
hdc = CreateDC(pi->pDriverName, pi->pPrinterName, pi->pPortName, NULL);
pi
是PRINTER_INFO_2
结构(https://docs.microsoft.com/en-us/windows/win32/printdocs/printer-info-2)的地方。
好像在我们的Server 2012R2机器上安装了Microsoft KB4517298(https://support.microsoft.com/en-us/help/4517298/windows-8-1-update-kb4517298)之后,此行挂起没有明显原因。与原始海报一样,以64位重建应用程序似乎可以修复该问题。但是,我们仍然不知道为什么会这样。删除此修补程序可以解决问题,然后重新应用将导致该问题再次发生。
我们正在与我们的供应商合作,以查看我们是否可以了解这种最新Windows Update破坏我们的原因(以及更好的解决方法!)。