我有一个对象,DC,类型CDC的,我想获得一个HDC对象。

我读MSDN文档此处 ,但并不真正了解它。

有人能为我提供关于如何做到这一点的简单例子/解释?

有帮助吗?

解决方案

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...
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top