Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются методы, которые можно использовать для оптимизации элементов ActiveX для повышения производительности.
Это важно
ActiveX — это устаревшая технология, которая не должна использоваться для новой разработки. Дополнительные сведения о современных технологиях, заменяющих ActiveX, см. в разделе ActiveX Controls.
Темы "Отключение параметра 'Активировать, когда видимый' и 'Предоставление взаимодействия с мышью в неактивном состоянии' обсуждают элементы управления, которые не создают окно, пока не будут активированы. В разделе "Предоставление активации без окон " рассматриваются элементы управления, которые никогда не создают окно, даже если они активируются.
Windows имеют два основных недостатка для объектов OLE: они препятствуют тому, чтобы объекты были прозрачными или непрямоугольными в активном состоянии, и добавляют значительные накладные расходы на создание экземпляра и отображение элементов управления. Как правило, создание окна занимает 60 процентов времени создания элемента управления. При использовании одного общего окна (обычно контейнера) и некоторых кодов отправки элемент управления получает те же службы окон, как правило, без потери производительности. Наличие окна в основном создает ненужные накладные расходы для объекта.
Некоторые оптимизации не обязательно повышают производительность при использовании элемента управления в определенных контейнерах. Например, контейнеры, выпущенные до 1996 года, не поддерживают активацию без окон, поэтому реализация этой функции не обеспечит преимущество в старых контейнерах. Однако почти каждый контейнер поддерживает сохраняемость, поэтому оптимизация кода сохраняемости элемента управления, скорее всего, улучшит его производительность в любом контейнере. Если элемент управления предназначен специально для использования с одним типом контейнера, может потребоваться изучить, какие из этих оптимизаций поддерживаются этим контейнером. В общем, однако, следует попытаться реализовать как можно больше методов, применимых к вашему конкретному элементу управления, чтобы ваш элемент управления функционировал как можно лучше в различных контейнерах.
Вы можете реализовать многие из этих оптимизаций с помощью Мастера создания управляющих элементов MFC ActiveX на странице Параметры элемента управления.
Параметры оптимизации OLE мастера управления ActiveX MFC
| Настройка элемента управления в мастере управления ActiveX MFC | Действие | Дополнительные сведения |
|---|---|---|
| Активировать, когда видим флажок | Очистить | Отключение опции «Активация, когда видимо» |
| Флажок включения без окна | Выберите | Предоставление активации без окон |
| Флажок контекста устройства без переключа | Выберите | Использование контекста неотрезанного устройства |
| Флажок для включения режима без мерцания | Выберите | Предоставление активации Flicker-Free |
| Уведомления указателя мыши при неактивном флажке | Выберите | Предоставление взаимодействия с мышью в неактивном состоянии |
| Флажок "Оптимизированный код рисования" | Выберите | Оптимизация чертежа управления |
Подробные сведения о функциях-членах, реализующих эти оптимизации, см. в разделе COleControl.
Дополнительные сведения можно найти здесь