Relacionamentos entre objetos MFC
Para ajudar colocar o processo de criação do documento/exibição na perspectiva, consulte um programa em execução: um documento, a janela do quadro usada para conter a exibição, e a exibição associada ao documento.
Um documento mantém uma lista das exibições desse documento e um ponteiro para o modelo de documento que criou o documento.
Uma exibição mantém um ponteiro para o documento e é um filho da janela pai do quadro.
Uma janela do quadro do documento mantém um ponteiro para a exibição ativa atual.
Um modelo de documento mantém uma lista dos documentos abertos.
O aplicativo mantém uma lista dos modelos do documento.
As janelas controlam de todas as janelas abertas para que possa enviar-lhes mensagens.
Essas relações são estabelecidas durante a criação do 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 do 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. |
View |
Chame GetDocument para obter o documento. Chame GetParentFrame para obter a janela do quadro. |
Janela do quadro do documento |
Chame GetActiveView para obter a exibição atual. Chame GetActiveDocument para obter o documento associado à exibição atual. |
Janela do quadro MDI |
Chame MDIGetActive para obter CMDIChildWndatualmente ativo. |
Normalmente, uma janela do quadro tem uma exibição, mas às vezes, como no windows do divisor, a mesma janela do quadro contém várias exibições. A janela do quadro mantém um ponteiro para a exibição atualmente ativo; o ponteiro é atualizado enquanto outra exibição é ativada.
Dica
Um ponteiro para a janela do quadro principal é armazenado na variável de membro de m_pMainWnd do objeto do aplicativo.Uma chamada para OnFileNew na substituição da função de membro de InitInstance de CWinApp define m_pMainWnd para você.Se você não chama OnFileNew, você deve definir o valor da variável em InitInstance você mesmo. (Os aplicativos do componente através de SDI (servidor) não podem definir a variável /Embedding se estiver na linha de comando.) Observe que m_pMainWnd agora é um membro da classe CWinThread em vez de CWinApp.
Consulte também
Conceitos
Modelos de documento e o processo de criação de documento/exibição