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


Отношения между объектами MFC

Чтобы упростить процесс создания документа или представления, рассмотрите возможность выполнения программы: документа, окна кадра, используемого для хранения представления, и представления, связанного с документом.

  • Документ сохраняет список представлений этого документа и указатель на шаблон документа, созданный документом.

  • Представление сохраняет указатель на документ и является дочерним элементом родительского окна фрейма.

  • Окно фрейма документа сохраняет указатель на текущее активное представление.

  • Шаблон документа сохраняет список открытых документов.

  • Приложение хранит список шаблонов документов.

  • Windows отслеживает все открытые окна, чтобы они могли отправлять сообщения.

Эти связи устанавливаются во время создания документа или представления. В следующей таблице показано, как объекты в запущенной программе могут получить доступ к другим объектам. Любой объект может получить указатель на объект приложения, вызвав глобальную функцию AfxGetApp.

Получение доступа к другим объектам в приложении

Из объекта Как получить доступ к другим объектам
Документ Используйте GetFirstViewPosition и GetNextView для доступа к списку представлений документа.

Вызовите GetDocTemplate , чтобы получить шаблон документа.
Представление Вызовите GetDocument , чтобы получить документ.

Вызовите GetParentFrame , чтобы получить окно фрейма.
Окно фрейма документа Вызовите GetActiveView , чтобы получить текущее представление.

Вызовите GetActiveDocument , чтобы получить документ, присоединенный к текущему представлению.
Окно фрейма MDI Вызовите MDIGetActive , чтобы получить текущий активный CMDIChildWnd.

Как правило, окно кадра имеет одно представление, но иногда, как и в окнах разбиения, то же окно фрейма содержит несколько представлений. Окно кадра сохраняет указатель на текущее активное представление; Указатель обновляется в любой момент активации другого представления.

Примечание.

Указатель на главное окно кадра хранится в переменной элемента m_pMainWnd объекта приложения. Вызов OnFileNew в переопределении InitInstance функции-члена наборов CWinAppm_pMainWnd для вас. Если вы не вызываете OnFileNew, необходимо самостоятельно задать значение InitInstance переменной. (Приложения com-компонента SDI (сервер) не могут задать переменную, если /Embedding находится в командной строке.) Обратите внимание, что m_pMainWnd теперь является членом класса CWinThread , а не CWinApp.

См. также

Шаблоны документов и процесс создания документа или представления
Создание шаблонов документов
Создание документа и представления
Создание документов, окон и представлений