Relacionamentos entre objetos MFC
Para ajudar a colocar o processo de criação do documento/exibição em perspectiva, considere um programa em execução: um documento, a janela de quadros usada para conter o modo de exibição, e o modo de exibição associado ao documento.
Um documento mantém uma lista dos modos de exibição desse documento e um ponteiro para o modelo de documento que criou o documento.
Um modo de exibição mantém um ponteiro para seu documento e é um filho de sua janela de quadro pai.
Uma janela de quadro de documento mantém um ponteiro para o modo de exibição ativo atual.
Um modelo de documento mantém uma lista de seus documentos abertos.
O aplicativo mantém uma lista de seus modelos de documento.
O Windows mantém o controle de todas as janelas abertas para que possa enviar mensagens para elas.
Essas relações são estabelecidas durante a criação de documento/exibição. A tabela a seguir mostra como os objetos em um programa em execução podem acessar outros objetos. Qualquer objeto pode obter um ponteiro para o objeto de aplicativo chamando a função global AfxGetApp.
Obter acesso a outros objetos em seu aplicativo
Do objeto | Como acessar outros objetos |
---|---|
Documento | Use GetFirstViewPosition e GetNextView para acessar a lista de exibição do documento. Chame GetDocTemplate para obter o modelo de documento. |
Modo de exibição | Chame GetDocument para obter o documento. Chame GetParentFrame para obter a janela de quadro. |
Janela de quadro do documento | Chame GetActiveView para obter o modo de exibição atual. Chame GetActiveDocument para obter o documento anexado ao modo de exibição atual. |
Janela do quadro MDI | Chame MDIGetActive para obter o CMDIChildWnd ativo no momento. |
Normalmente, uma janela de quadro tem uma exibição, mas às vezes, como em janelas de divisor, a mesma janela de quadro contém várias exibições. A janela de quadro mantém um ponteiro para o modo de exibição ativo no momento; o ponteiro é atualizado sempre que outro modo de exibição é ativado.
Observação
Um ponteiro para a janela de quadro principal é armazenado na variável de membro m_pMainWnd do objeto do aplicativo. Uma chamada para OnFileNew
na sua substituição da função membro InitInstance
de CWinApp
define m_pMainWnd para você. Se você não chamar OnFileNew
, deverá definir o valor da variável em InitInstance
por conta própria. (Os aplicativos de componente SDI COM (servidor) podem não definir a variável se /Embedding estiver na linha de comando.) Observe que m_pMainWnd agora é um membro da classe CWinThread
em vez de CWinApp
.
Confira também
Modelos de documento e o processo de criação de exibição de documento
Criação do modelo de documento
Criação de exibição/documento
Criando novos documentos, janelas e exibições