Поделиться через


Отключение параметра "Активировать, когда видим".

Элемент управления имеет два основных состояния: активные и неактивные. Традиционно эти состояния различались по наличию окна для контроля. Активный элемент управления имел окно; неактивный элемент управления его не имел. При внедрении активации без окон это различие больше не является универсальным, но по-прежнему применяется ко многим элементам управления.

По сравнению с остальной инициализацией, которую обычно выполняет элемент ActiveX, создание окна является крайне ресурсозатратной операцией. В идеале элемент управления отложит создание своего окна до тех пор, пока это не станет абсолютно необходимым.

Многие элементы управления не должны быть активными в течение всего времени, которое они отображаются в контейнере. Часто элемент управления может оставаться в неактивном состоянии до тех пор, пока пользователь не выполнит операцию, требующую, чтобы она стала активной (например, щелкнув мышью или нажав клавишу TAB). Чтобы элемент управления оставался неактивным, пока контейнер не должен активировать его, удалите флаг OLEMISC_ACTIVATEWHENVISIBLE из других флагов элемента управления:

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

Флаг OLEMISC_ACTIVATEWHENVISIBLE автоматически опускается, если вы отключаете параметр "Активировать, когда видимо" на странице "Параметры элемента управления" мастера элементов управления MFC ActiveX при создании элемента управления.

См. также

Элементы ActiveX MFC: оптимизация