繁体   English   中英

如何从CDC对象获取HDC对象?

[英]How can I get an HDC object from a CDC object?

我有一个CDC类型的对象dc,我想得到一个HDC对象。

我在这里阅读了MSDN文档,但并不是真的理解它。

有人可以给我一个关于如何做到这一点的简短示例/解释吗?

当你有CDC对象时,它将在必要时隐式转换为HDC

CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();

如果你有指向CDC对象的指针,那么使用函数GetSafeHdc将更加清晰:

CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();

CDC类定义了operator HDC() ,允许编译器隐式地将CDC对象转换为HDC。 因此,如果您有CDC *和一个接受HDC的函数,那么您只需取消引用指针并将其发送到函数。

CDC是一个C ++类 - 它以合理的近似值 - 封装了一个HDC,它是设备上下文的句柄。

您链接到的文档描述了一个转换operator ,它是一个C ++结构,类可以提供这种结构,允许从类的实例隐式转换为其他类型。 在这种情况下,隐式转换导致CDC实例封装的底层句柄(HDC)。

您可以使用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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM