Compartilhar via


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