关闭“可见时激活”选项

控件有两种基本状态:活动状态和非活动状态。 传统上,通过查看控件是否有窗口来区分这两种状态。 活动控件有一个窗口;非活动控件没有窗口。 引入无窗口激活功能后,这种区分方式不再通用,但仍适用于许多控件。

与通常由 ActiveX 控件执行的初始化的其余工作相比,创建窗口是一个资源消耗很大的操作。 理想情况下,控件会推迟创建其窗口,直到非要执行此操作。

许多控件在其在容器中可见的整个时间不需要是活动的。 通常,控件可保持不活动状态,直到用户执行需要此控件变为活动状态的操作(例如,使用鼠标单击或按 Tab 键)。 若要使控件在容器需要激活它之前保持非活动状态,请从控件的各种标志中删除 OLEMISC_ACTIVATEWHENVISIBLE 标志

static const DWORD BASED_CODE _dwNVC_MFC_AxOptOleMisc =
    OLEMISC_SETCLIENTSITEFIRST |
    OLEMISC_INSIDEOUT |
    OLEMISC_CANTLINKINSIDE |
    OLEMISC_RECOMPOSEONRESIZE;

如果你在创建控件时关闭 MFC ActiveX 控件向导的控件设置页中的“可见时激活”选项,则将自动省略 OLEMISC_ACTIVATEWHENVISIBLE 标志

另请参阅

MFC ActiveX 控件:优化