无法从 COleControl C++ 调用 CWnd::Create

问题描述

我正在为 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),AFX_IDW_PANE_FirsT,NULL);

但此行返回 false。

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

解决方法

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

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

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