MFC ActiveX 控件:优化
本文介绍可用于优化 ActiveX 控件以提高性能的技术。
重要
ActiveX 是旧技术,不应用于新开发。 有关取代 ActiveX 的新式技术的详细信息,请参阅 ActiveX 控件。
禁用“可见时激活”选项和不活动时提供鼠标交互主题讨论了在激活之前不会创建窗口的控件。 提供无窗口激活主题讨论了从不创建窗口的控件(即使被激活)。
Windows 对 OLE 对象有两个主要缺点:它们会阻止对象在活动时处于透明或非矩形状态,并且为控件的实例化和显示增加了很大的开销。 通常,创建窗口会占用控件创建时间的 60%。 使用单个共享窗口(通常是容器的)和一些调度代码时,控件会接收相同的窗口服务,通常不会损失性能。 对于对象而言,拥有一个窗口通常是不必要的开销。
在特定容器中使用控件时,某些优化不一定会提高性能。 例如,1996 年之前发布的容器不支持无窗口激活,因此实现此功能不会为旧容器带来好处。 但是,几乎每个容器都支持持久化,因此优化控件的持久性代码可能会提高其在任何容器中的性能。 如果控件专门用于一种特定类型的容器,则可能需要研究该容器支持哪些优化。 但是,一般来说,应尝试实现尽可能多的这些适用于特定控件的技术,以确保控件在各种容器中尽可能正常地执行。
可以通过控件设置页上的 MFC ActiveX 控件向导实现其中的许多优化。
MFC ActiveX 控件向导 OLE 优化选项
MFC ActiveX 控件向导中的控件设置 | 操作 | 详细信息 |
---|---|---|
“可见时激活”复选框 | Clear | 禁用“可见时激活”选项 |
“无窗口激活”复选框 | 选择 | 提供无窗口激活 |
“未剪辑的设备上下文”复选框 | 选择 | 使用未剪辑的设备上下文 |
“无闪烁激活”复选框 | 选择 | 提供无闪烁激活 |
“不活动时的鼠标指针通知”复选框 | 选择 | 不活动时提供鼠标交互 |
“优化绘图代码”复选框 | 选择 | 优化控件绘制 |
有关实现这些优化的成员函数的详细信息,请参阅 COleControl。
有关详细信息,请参阅: