【发布时间】:2013-11-30 09:17:39
【问题描述】:
我在将编译器从 VS 2010 Ultimate 升级到 VS 2013 Professional 时遇到了一些奇怪的行为。操作系统为 Windows 7 Professional。
使用GetLastError(),我将问题追溯到DescribePixelFormat(...) 调用。在此之前,没有错误。紧接着,我收到错误 1150(显然是“指定的程序需要更新版本的 Windows。”)。
编辑:代码如下所示:
HWND window = CreateWindowEx(...);
HDC device_context = GetDC(window);
DWORD error_before = GetLastError(); //is 0
int count = DescribePixelFormat(device_context, 1, sizeof(PIXELFORMATDESCRIPTOR), NULL);
DWORD error_after = GetLastError(); //is 1150
问题仅出现在 Release x64 模式下,并且相同的代码在 VS 2010 上运行良好。这可能与 VS 2013 认为它需要 Win 8 或其他什么有关吗?这是怎么回事?
【问题讨论】:
-
听起来像是一个经典的错误,当您实际上没有从 winapi 函数获得失败返回码时调用 GetLastError()。错了,Windows不会在没有错误的情况下通过重置错误代码的麻烦。当然,没有人可以看到你的代码来判断是不是这样,强迫我们猜测是没有效率的。
标签: visual-studio winapi directx