0

我正在为 MFC 应用程序开发 ActiveX 控件。

在这个应用程序中,我有一个控制类:

class MyControl : public COleControl

和一个 CWnd 类:

class MyCWnd : public CWnd

以及活动 x 和 idl 文件的其他类...

在 MyControl 类中,我想将窗口 MyCWnd 作为 MFC 公寓(窗口运行的线程)打开。

为此,我在 MyControl 中有一个属性 theWnd 定义为:

MyCWnd theWnd

在使用 MyControl 的方法中,我想通过调用来创建窗口:

theWnd.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), NULL, AFX_IDW_PANE_FIRST, NULL);

但这条线返回假。

我应该如何在 COleControl 类中初始化然后创建(启动)一个 CWnd?如果不可能,我可以从 COleControl 以外的 ActiveX 控件继承另一个类吗?

4

1 回答 1

0

所以我找到了一个在我看来像黑客的解决方案:

theWnd.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), GetDesktopWindow(), AFX_IDW_PANE_FIRST, NULL)

父窗口就是桌面。我不知道这是否是一种干净的方法......

于 2021-01-29T08:37:29.357 回答