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


Контейнеры. Состояния элементов клиентов

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

Клиентский элемент проходит через несколько состояний при создании, активации, изменении и сохранении. Каждый раз при изменении состояния элемента платформа вызывает COleClientItem::OnChange с уведомлением OLE_CHANGED_STATE . Второй параметр — это значение из COleClientItem::ItemState перечисления. Может принимать одно из следующих значений:

  • COleClientItem::emptyState

  • COleClientItem::loadedState

  • COleClientItem::openState

  • COleClientItem::activeState

  • COleClientItem::activeUIState

В пустом состоянии клиентский элемент еще не полностью является элементом. Для него выделена память, но она еще не инициализирована с данными ЭЛЕМЕНТА OLE. Это состояние, в которое находится элемент клиента, когда он был создан с помощью вызова new , но еще не прошел второй шаг типичного двухфакторного создания.

На втором шаге, выполняемом через вызов COleClientItem::CreateFromFile или другую CreateFromфункцию xxxx , элемент полностью создается. Данные OLE (из файла или другого источника, например буфер обмена) были связаны с производным COleClientItemобъектом. Теперь элемент находится в загруженном состоянии.

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

Когда элемент был активирован на месте, он проходит, как правило, только кратко, через активное состояние. Затем он вводит активное состояние пользовательского интерфейса, в котором сервер объединил меню, панели инструментов и другие компоненты пользовательского интерфейса с элементами контейнера. Наличие этих компонентов пользовательского интерфейса отличает активное состояние пользовательского интерфейса от активного состояния. В противном случае активное состояние напоминает активное состояние пользовательского интерфейса. Если сервер поддерживает отмену, сервер должен хранить сведения об отмене состояния элемента OLE, пока он не достигнет загруженного или открытого состояния.

См. также

Контейнеры
Активация
Контейнеры. Уведомления элементов клиентов
Средства отслеживания
Класс CRectTracker