MFC ActiveX 控件:优化

本文介绍可用于优化 ActiveX 控件以提高性能的技术。

重要

ActiveX 是一项不推荐用于新开发的旧技术。 有关取代 ActiveX 的新式技术的详细信息,请参阅 ActiveX 控件

主题 关闭“在可见时激活时激活”选项 并提供 鼠标交互,而非活动 状态讨论在激活之前未创建窗口的控件。 提供无窗口激活的主题讨论永远不会创建窗口的控件,即使它们已激活也是如此。

Windows 对 OLE 对象有两个主要缺点:它们阻止对象在活动时透明或非矩形,并且会为控件的实例化和显示增加很大的开销。 通常,创建窗口需要 60% 的控件创建时间。 使用单个共享窗口(通常为容器)和一些调度代码,控件接收相同的窗口服务,通常不会丢失性能。 对于对象来说,窗口的开销大多是不必要的。

某些优化不一定在某些容器中使用控件时提高性能。 例如,在 1996 年之前发布的容器不支持无窗口激活,因此实现此功能不会在较旧的容器中带来好处。 但是,几乎每个容器都支持持久性,因此优化控件的持久性代码可能会提高其在任何容器中的性能。 如果控件专门用于一种特定类型的容器,则可能需要研究该容器支持哪些优化。 但是,一般情况下,应尝试实现适用于特定控件的许多技术,以确保控件在各种容器中也能执行这些技术。

可以在“控件设置”页上通过 MFC ActiveX 控件向导实现其中许多优化。

MFC ActiveX 控件向导 OLE 优化选项

MFC ActiveX 控件向导中的控件设置 行动 详细信息
当可见复选框时激活 清晰 关闭“当可见时激活”选项
无窗口激活 复选框 选择 提供无窗口激活
“未捕获的设备上下文 ”复选框 选择 使用未修复的设备上下文
“无闪烁激活 ”复选框 选择 提供 Flicker-Free 激活
处于非活动状态时鼠标指针通知 复选框 选择 在非活动状态时提供鼠标交互
“优化绘图代码 ”复选框 选择 优化控件绘图

有关实现这些优化的成员函数的详细信息,请参阅 COleControl

有关详细信息,请参见:

另请参阅

MFC ActiveX 控件