Um retrato da arquitetura de documento/exibição
Documentos e exibições são emparelhados em um aplicativo MFC típico. Os dados são armazenados no documento, mas a exibição tem acesso privilegiado a eles. A separação entre documento e exibição separa o armazenamento e a manutenção dos dados de sua apresentação.
Obtendo acesso aos dados do documento por meio da exibição
A exibição acessa os dados do documento com a função GetDocument, que retorna um ponteiro para o documento, ou fazendo da classe da exibição um friend
de C++ da classe de documento. Em seguida, a exibição usa seu acesso aos dados para obter os dados quando está pronta para desenhá-los ou manipulá-los de alguma forma.
Por exemplo, na função membro OnDraw da exibição, a exibição usa GetDocument
para obter um ponteiro de documento. Em seguida, ela usa esse ponteiro para acessar um membro de dados CString
no documento. A exibição passa a cadeia de caracteres para a função TextOut
. Para ver o código deste exemplo, consulte Desenhando em uma exibição.
Entrada do usuário para a exibição
A exibição também pode interpretar um clique do mouse como uma seleção ou edição de dados. De maneira semelhante, ela pode interpretar pressionamentos de tecla como entrada ou edição de dados. Suponha que o usuário digite uma cadeia de caracteres em uma exibição que gerencia texto. A exibição obtém um ponteiro para o documento e usa o ponteiro para passar os novos dados para o documento, que os armazena em uma estrutura de dados.
Atualizando várias exibições do mesmo documento
Em um aplicativo com várias exibições do mesmo documento, como uma janela de divisor em um editor de texto, primeiro a exibição passa os novos dados para o documento. Em seguida, ela chama a função membro UpdateAllViews do documento, que instrui todas as exibições do documento a se atualizarem, refletindo os novos dados. Isso sincroniza as exibições.