Compartilhar via


Relações entre objetos MFC

Para ajudar a colocar o processo de criação de documento/exibição em perspectiva, considere um programa em execução: um documento, a janela de quadro usada para conter a exibição e a exibição associada 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 eles.

Essas relações são estabelecidas durante a criação do documento/da visualizaçã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.

Obtendo 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.
Visualizar Chame GetDocument para obter o documento.

Chame GetParentFrame para obter a janela de quadros.
Janela de quadro do documento Chame GetActiveView para obter a exibição atual.

Chame GetActiveDocument para anexar o documento ao modo de exibição atual.
Janela do quadro MDI Chame MDIGetActive para obter o CMDIChildWnd atualmente ativo.

Normalmente, uma janela de quadro tem uma exibição, mas, às vezes, como em janelas de divisão, 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 membro m_pMainWnd do objeto de 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 você mesmo. (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.

Consulte também

Modelos de documento e o processo de criação de documento/exibição
Criação de modelo de documento
Criação de documento/exibição
Criando novos documentos, Windows e exibições