Partilhar via


Relações entre objetos MFC

Para ajudar a colocar o processo de criação de documentos/modos de exibição em perspetiva, considere um programa em execução: um documento, a janela de quadro usada para conter o modo de exibição e o modo de exibição associado ao documento.

  • Um documento mantém uma lista das vistas 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 é filho de sua janela de quadro pai.

  • Uma janela de quadro de documento mantém um ponteiro para sua exibição ativa atual.

  • Um modelo de documento mantém uma lista de seus documentos abertos.

  • O aplicativo mantém uma lista de seus modelos de documentos.

  • O Windows controla todas as janelas abertas para que possa enviar mensagens para elas.

Essas relações são estabelecidas durante a criação do documento/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 do quadro.
Janela de estrutura do documento Chame GetActiveView para obter a exibição atual.

Chame GetActiveDocument para anexar o documento ao modo de exibição atual.
Janela de interface 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 do quadro mantém um ponteiro para a vista atualmente ativa; o ponteiro é atualizado sempre que outra vista é ativada.

Observação

Um ponteiro para a janela do quadro principal é armazenado na variável membro m_pMainWnd do objeto do aplicativo. Uma chamada para OnFileNew no seu substituto da função membro InitInstance de CWinApp define m_pMainWnd para você. Se não chamares OnFileNew, deves definir o valor da variável em InitInstance tu próprio. (Os aplicativos do 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 CWinAppde .

Ver também

Modelos de Documentos e o Processo de Criação de Documentos/Vistas
Criação de modelo de documento
Criação de Documentos/Vistas
Criando novos documentos, janelas e modos de exibição