可视C++:错误 C2664:"释放DC":无法将参数 1 从"HDC"转换为"HWND"

Visual C++:error C2664: 'ReleaseDC' : cannot convert parameter 1 from 'HDC' to 'HWND'

本文关键字:参数 HDC 转换 HWND 错误 C++ C2664 释放 可视 DC      更新时间:2023-10-16

我想在Visual Studio 2008上编译一个来自Game Developer's Magazine的旧的(1998)Edge Collapse实现(项目文件在"melax.zip"中压缩)。

在winmain.cpp的第390行,我得到以下编译错误:

winmain.cpp(390) : error C2664: 'ReleaseDC' : cannot convert parameter 1 from 'HDC' to 'HWND' 

和第439行。

我该如何解决这个问题?

ReleaseDC的参数在调用中被反转-他调用ReleaseDC(hDC, hWnd),而正确的签名是

int ReleaseDC(
  __in  HWND hWnd,
  __in  HDC hDC
);

享受修复一个存在了13年的bug:)

上述行如下:

ReleaseDC(hDC, hWnd);

但是,ReleaseDC函数接受参数的顺序是倒序的