Отношения между объектами MFC
Чтобы упростить процесс создания документа или представления, рассмотрите возможность выполнения программы: документа, окна кадра, используемого для хранения представления, и представления, связанного с документом.
Документ сохраняет список представлений этого документа и указатель на шаблон документа, созданный документом.
Представление сохраняет указатель на документ и является дочерним элементом родительского окна фрейма.
Окно фрейма документа сохраняет указатель на текущее активное представление.
Шаблон документа сохраняет список открытых документов.
Приложение хранит список шаблонов документов.
Windows отслеживает все открытые окна, чтобы они могли отправлять сообщения.
Эти связи устанавливаются во время создания документа или представления. В следующей таблице показано, как объекты в запущенной программе могут получить доступ к другим объектам. Любой объект может получить указатель на объект приложения, вызвав глобальную функцию AfxGetApp.
Получение доступа к другим объектам в приложении
Из объекта | Как получить доступ к другим объектам |
---|---|
Документ | Используйте GetFirstViewPosition и GetNextView для доступа к списку представлений документа. Вызовите GetDocTemplate , чтобы получить шаблон документа. |
Представление | Вызовите GetDocument , чтобы получить документ. Вызовите GetParentFrame , чтобы получить окно фрейма. |
Окно фрейма документа | Вызовите GetActiveView , чтобы получить текущее представление. Вызовите GetActiveDocument , чтобы получить документ, присоединенный к текущему представлению. |
Окно фрейма MDI | Вызовите MDIGetActive , чтобы получить текущий активный CMDIChildWnd. |
Как правило, окно кадра имеет одно представление, но иногда, как и в окнах разбиения, то же окно фрейма содержит несколько представлений. Окно кадра сохраняет указатель на текущее активное представление; Указатель обновляется в любой момент активации другого представления.
Примечание.
Указатель на главное окно кадра хранится в переменной элемента m_pMainWnd объекта приложения. Вызов OnFileNew
в переопределении InitInstance
функции-члена наборов CWinApp
m_pMainWnd для вас. Если вы не вызываете OnFileNew
, необходимо самостоятельно задать значение InitInstance
переменной. (Приложения com-компонента SDI (сервер) не могут задать переменную, если /Embedding находится в командной строке.) Обратите внимание, что m_pMainWnd теперь является членом класса CWinThread
, а не CWinApp
.
См. также
Шаблоны документов и процесс создания документа или представления
Создание шаблонов документов
Создание документа и представления
Создание документов, окон и представлений