问题描述
我正在为 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)
父窗口就是桌面。我不知道这是否是一种干净的方法...