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


Управление данными состояния модулей MFC

Этот раздел описывает данными состояния модулей MFC и как это обновленное состояние, когда поток выполнения (код принимает пути с помощью приложения при выполнении) вводит и оставляет модуль. Переключение состояния модуля с макросами AFX_MANAGE_STATE и METHOD_PROLOGUE также рассматривается.

Примечание

Термин «модуль» здесь ссылается на выполняемая программе, или к библиотеке DLL (или набор библиотек DLL), которая работает независимо от остальной части приложения, но используется общее копию библиотеки DLL MFC.Элемент управления ActiveX типичный пример модуля.

Как показано на следующем рисунке, MFC имеет данные состояния для каждого модуля, используемых в приложении. Примеры этих данных включают дескрипторы экземпляров Windows, используемые для загрузки ресурсов), указателей в текущих CWinApp и объектам CWinThread приложения, OLE счетчиков ссылок модуля и различные сопоставления, которые поддерживаются дескрипторы объекта Windows связей между и соответствующие экземпляры объектов MFC. Однако если приложение использует несколько модулей, данные состояния каждого модуля нет широко приложения. Вместо этого каждый модуль имеет свой закрытая копия данных состояния MFC.

Данные состояния приложения одного модуля ()

Данные о состоянии для отдельного модуля (приложение)

Данные состояния модуля содержится в структуре и всегда доступен через указатель на этой структуре. Если поток выполнения входит в указанный модуль, как показано на следующем рисунке, состояние которого модуля должно быть «текущие» или «эффективным» состоянием. Поэтому каждый объект потока имеет указатель на эффективной структуры состояния этого приложения. Сохранить этот указатель обновлен во все время крайне важен для управления глобального состояния приложения и поддержанию целостности состояния каждого модуля. Неправильное управление глобального состояния может привести к непрогнозируемому расширение функциональности приложения.

Данные состояния нескольких модулей

Данные состояния для нескольких модулей

Другими словами, каждый модуль отвечает за правильно переключение между состояниями модуля во всей его точки входа. «Точка входа» любое место, где поток выполнения может ввести код модуля. Точки входа:

См. также

Основные понятия

Общие разделы по MFC