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

sam*_*moz 10 c++ windows mfc cdc

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

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

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

Kir*_*sky 14

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

CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();
Run Code Online (Sandbox Code Playgroud)

如果你有指向CDC对象的指针,那么使用函数GetSafeHdc会看起来更清晰:

CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
Run Code Online (Sandbox Code Playgroud)


Nav*_*een 11

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