我现在有个现存窗口A,想在A窗口新建子窗口B,但是我现在只知道窗口A的HWND句柄,想把HWND转化成QWidget对象。
在网上搜了一下,可以通过 QWidget::find()来解决,但是总是获得不成功。代码如下:
AIErr error = kNoErr;
AIPanelPlatformWindow hDlg = NULL; // hDlg 就是HWND句柄
error = sAIPanel->GetPlatformWindow(fPanel, hDlg);
QWidget* pParentWidget = QWidget::find((WId)hDlg);
pParentWidget 始终为空,不知道如何解决。
请大神帮忙解决或提出新的方法。
谢谢
------解决思路----------------------
直接新建一个QWidget然后 在Windows 平台 WId 获得的就是 句柄。然后找到你的 目标窗口,如你所说,他有 HWND
然后调用 Windows API SetParent,当然这个只是可用。你可能还需要后续处理 Focus 之类的东西才能比较完善。
------解决思路----------------------
首先:HWND 转化不成 QWidget
其次:QWidget::find() 只是在当前程序内根据HWND找出与之对象的QWidget