DescribePixelFormat“需要更新版本的Windows”

时间:2013-11-30 09:17:39

标签: visual-studio winapi directx

在将编译器从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或其他什么?这是怎么回事?

1 个答案:

答案 0 :(得分:0)

调用GetLastError的代码不正确。 DescribePixelFormat的文档说:

  

返回值

     

如果函数成功,则返回值是最大像素格式   设备上下文的索引。另外,功能设置了   ppfd指向PIXELFORMATDESCRIPTOR结构的成员   根据指定的像素格式。

     

如果函数失败,则返回值为零。要获得扩展错误   信息,请致电GetLastError

换句话说,您需要检查DescribePixelFormat函数的返回值。你不是那样做的。仅在DescribePixelFormat返回零的情况下,GetLastError返回的值才有意义。