c++ - 将简单的 MFC CView/CDocument/CSingleDocTemplate 应用程序转换为 ActiveX 控件

标签 c++ visual-c++ mfc activex

我有一个相当简单的 MFC 应用程序,它只定义了自己的 CDocumentCViewCFrameWnd 子类,并通过CSingleDocTemplate 在 View 的树中显示文档的只读内容。都是非常标准的 MFC MVC。

我现在需要转换此应用程序,以便它作为 ActiveX 控件工作,然后我可以将其嵌入到更大的应用程序中。

我该怎么办?

是否可以使用COleControl子类代替CSingleDocTemplate中的CFrameWnd子类?或者我是否需要以某种方式将 CFrameWnd 子类放置在 COleControl 中?

如果做不到这一点,我如何在 ActiveX 控件中使用现有的 CDocument\CView 子类?

最佳答案

回答我自己的问题:我发现很多关于此问题的旧文章的引用,该文章曾经位于 http://www.microsoft.com/mind/0497/mfc.asp但早已消失。 :(

幸运的是,Wayback Machine仍然有它的完整拷贝:

<强> "Designing ActiveX Components with the MFC Document/View Model" by Steve Zimmerman, Microsoft Interactive Developer (April 1997)

Steve 展示了两个新类的源代码:

CActiveXDocTemplate : CSingleDocTemplate 的子类
CActiveXDocControl : COleControl 的子类

这允许我使用现有的 CViewCDocument ActiveX 控件中的子类。

(感谢史蒂夫,无论你现在身在何处)

关于c++ - 将简单的 MFC CView/CDocument/CSingleDocTemplate 应用程序转换为 ActiveX 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343473/

相关文章:

c++ - 如何根据另一个包含 0 或 1 个元素的 vector 有条件地否定 AVX2 int16_t vector ?

c++ - cpp show result 依赖于之前的结果

windows - Boost spirit : assertion fails under Windows but not Linux. 为什么?

c++ - MFC中的FormView和Dialog有什么区别?

windows - 覆盖默认的 F1 Windows 帮助行为

c++ - 如何为 boost::tuple 编写一个 `<<` 运算符?

c++ - 如何在 C++ 中同时使用默认和自定义复制构造函数?

c++ - 错误 C2143 和错误 C2059 在 ";"之前缺少 "{"

c++ - 在 Visual C++ 2005 中开发的 Visual C++ 项目 - 在 Visual C++ 2010 中,打开菜单时调试断言失败,但 Release模式有效,如何解决?

c++ - 在 C++/MFC 中混合和匹配类