从HDC句柄创建QPaintDevice

时间:2012-04-29 15:37:52

标签: c++ qt hdc

我有一个来自外部库的Windows HDC句柄,我想使用QPainter功能进行绘制。在Qt中有没有办法从HDC句柄创建QPaintDevice?

1 个答案:

答案 0 :(得分:0)

这样做的一种方法:

使用Windows API,从HDC获取HWND。

HWND handle = WindowFromDC(hdc);
assert(handle != NULL);

然后继承QWidget以获取受保护成员转换的访问权限。使用此方法,使用此成员创建QWidget,如此解决方案中所述:How to create a qwidget with a hwnd as parent。在这个例子中,我调用了QWidgetWrapper的子类。

QWidgetWrapper *w = new QWidgetWrapper();
w->create((Wld)main_window);

请注意,Wld是Qt中用于“平台相关窗口标识符”的typedef。