Winapi CreateDC挂在Win 8上

时间:2013-06-26 06:06:35

标签: winapi visual-c++ windows-8

我有一个使用winapi功能的程序。当它在WinXP(32位)或Win7(64位)上运行时一切正常。但是在Win8(64位)上有一个错误:有时程序挂起在这个代码行上

HDC hDisplay = CreateDC("DISPLAY", NULL, NULL, NULL);

可能是什么原因?

P.S。它是在WinXP 32位的MSVC 2005中为Win32平台构建的。

3 个答案:

答案 0 :(得分:1)

尝试:

CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)

答案 1 :(得分:0)

我已经设法为64位平台重建程序,现在可以正常工作。

答案 2 :(得分:0)

虽然这个问题很老,但今天我们也遇到了类似的问题。

我们有一些代码试图以此方式查询打印机:

hdc = CreateDC(pi->pDriverName, pi->pPrinterName, pi->pPortName, NULL);

piPRINTER_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破坏我们的原因(以及更好的解决方法!)。