创建基于MFC的ActiveX控件时各选项的说明

    技术2022-05-12  0

    Activates When Visible

    不选择此项可以让容器有权选择使控件失效,为了保存资源或加快启动就会使控件失效。如果不选择此复选框,并且您的控件要处理 WM_MOUSEMOVE 或 WM_SETCURSOR 消息时,就应该选中Mouse Pointer Notifications When Inactive选项。如果想将控件的激活推迟到容器需要它时(例如,用户通过鼠标单击),则取消选中此功能。关闭此功能可优化控件,因为只有在需要该控件时才会招致创建窗口的开销。

    Invisible At Runtime

    当设置此选项时,该控件在设计模式下可见,但在用户模式下不可见。通常时间控件可以选中此选项。

    Available In "Insert Object" Dialog

    当选中该选项后,该控件还会被注册为OLE服务器,使它出现在 Microsoft Word、Microsoft Excel 和其他OLE容器中的Insert Object对话框中。但最好不要选择此项,除非你确认需要此功能。

    Has An "About" Box

    指定控件有标准的 Windows“关于”对话框,并显示版本号和版权信息。

    Acts As A Simple Frame Control

    给控件添加一个 ISimpleFrameSite 接口,并为控件设置 OLEMISC_SIMPLEFRAME 位,指定控件是其他控件的容器。

    Windowless Acitivation

    使控件成为无窗口控件。无窗口激活考虑了非矩形控件或透明控件,而且无窗口控件不需要窗口控件所需的系统开销。无窗口激活没有考虑未剪辑的设备上下文和无闪烁激活。

    Unclipped Device Context

    在控件头文件中重写 COleControl::GetControlFlags 以禁用 COleControl 的 IntersectClipRect 调用。选择“未剪辑的设备上下文”可使速度得到少许提高。如果选择“无窗口激活”,则此功能不可用。

    Flicker-Free Activation

    大多数ActiveX控件是在创建时激活的并永远处于活动状态。但是如果容器使活动的控件失效,容器就会重新绘制控件。并且不活动的控件如果变成活动的,它也要绘制自己。对于在活动和不活动状态下看上去都相同的控件,重新绘制就没必要了,否则会造成难看的闪烁。设置此选项后,noFlickerActivate 标志包含在 COleControl::GetControlFlags 返回的标志中。

    Mouse Pointer Notifications When Inactive

    允许容器通过MFC提供的 IPointerInactive 给不活动的控件提交 WM_SETCURSOR 和 WM_MOUSEMOVE 消息。选择此选项后,pointerInactive 标志包含在 COleControl::GetControlFlags 返回的标志集合中。

    Optimized Drawing Code

    当调用 IViewObjectEx::Draw 绘制无窗口控件时,要求控件不改变开始时设备描述表的状态。一些容器解除了控件的这种责任,控件可以通过减少GDI调用的次数来加速重绘操作。要在支持此特性的容器中利用此功能,应选中此项并在每次调用 OnDraw 时调用 COleControl::IsOptimizedDraw。如果 IsOptimizedDraw 返回非零值,就不需要清除设备描述表。

    Loads Properties Asynchronously

    允许重置任何以前的异步数据并开始新的控件异步属性加载。对于Web控件,建议采用 Active Template Library 来开发。

     

    另外,Visual C++ 提供了一个ActiveX Control Test Container ,执行文件名为TStcon32.exe。


    最新回复(0)