[英]How can I get an HDC object from a CDC object?
当你有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.