题
解决方案
CDC类已operator HDC()
定义了允许编译器可进行CDC对象转换为HDC隐含。因此,如果你有CDC *和这需要HDC那么你只是取消引用指针并将其发送给该函数。一个功能
其他提示
当你已经CDC
对象将被隐式转换必要时HDC
:
CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();
如果你有指针CDC
对象然后使用函数GetSafeHdc
将显得更为清楚:
CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
CDC
是一个C ++类 - 到一个合理的近似 - 封装了一个HDC,这是一个设备句柄上下文
你链接到documenation描述了一种转换operator
,这是一个C ++构建的类可以提供以允许从一个类的实例,以一些其它类型的隐式转换。在这种情况下,隐式转换的结果在下面的手柄(HDC)其中CDC
实例封装。
可以通过使用CDC
实例执行转换的任何地方是它需要被转换为HDC
。
最简单地:
void f( const CDC& cdc )
{
HDC hdc = cdc;
// use hdc here
}
HDC hDC = dc;
只要它分配。
CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
//success...
}
不隶属于 StackOverflow