c++ - 如何替换/更新 MFC 对话框中的 ActiveX 控件

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

我有一个在 VS 2003 中构建的旧 MFC 项目,我想将其移植到 VS 2010。该项目使用 ActiveX 网格控件,即组件一中的 VSFlexGrid7。问题是,这个版本的 ActiveX 控件在 Windows 7(我有)中不起作用。有一个更新版本的网格,即 VSFlexGrid8,它应该与 Windows 7 兼容。

解决方案是将所有旧控件替换为较新的控件。

我的问题是,在不触及项目其他部分的情况下,替换控件的步骤是什么。完成此操作的最简单方法是什么?我是否必须修改类、资源 ID 等?

[解决方案:替换 .RC 文件中的 CLSID]

最佳答案

ActiveX 控件通过表示控件的 guid 绑定(bind)到资源文件。如果您要查看 .rc 文件内部,您将看到带有关联 guid 的控件。在您的情况下,假设您可以将较新版本拖到同一对话框中,最好从对话框中完全删除控件(使用资源编辑器)。完成后,您需要为控件生成一个新的类包装器。类向导应该能够为您处理。获得表示控件的新类包装器后,您需要替换源代码中的先前包装器类。

关于c++ - 如何替换/更新 MFC 对话框中的 ActiveX 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19116553/

相关文章:

c# - 在 asp.net 中将电子邮件作为模板发送

c++ - MFC 对话框中的 QWinWidget 不重新绘制或响应 Tab/箭头键

c++ - 为什么 std::bitset<8> 是 4 个字节大?

c - 未声明的标识符已经声明?

c++ - CDocument::SetPathName 在 WinXp 和 Windows 7 中的行为不同

apache-flex - 如何防止 MFC 对话框处理 Enter 和 Esc 键而不将其传递

c++ - std::condition_variable::wait()是POSIX线程取消点吗?

c++ - 在std::wstring上使用std::remove_if的警告(MSVC C++ 20)

c++ - 是否存在通过引用选择元素和通过指针操作选择元素都有效的情况?

c++ - Qt 菜单栏事件