Classes de janela derivadas
Você pode criar janelas diretamente de CWnd
ou derivar novas classes de janela de CWnd
. Normalmente, é assim que você cria suas janelas personalizadas. No entanto, a maioria das janelas usadas em um programa de estrutura são criadas com base em uma das classes de janela de quadro derivadas de CWnd
fornecidas pelo MFC.
Classes de janela de quadro
CFrameWnd
Usadas para janelas de quadro SDI que enquadram um só documento e sua exibição. A janela de quadro é a janela de quadro principal do aplicativo e a janela de quadro do documento atual.
CMDIFrameWnd
Usada como a janela de quadro principal para aplicativos MDI. A janela de quadro principal é um contêiner para todas as janelas de documento MDI e compartilha sua barra de menus com elas. Uma janela de quadro MDI é uma janela de nível superior que aparece na área de trabalho.
CMDIChildWnd
Usada para documentos individuais abertos em uma janela de quadro principal MDI. Cada documento e sua exibição são enquadrados por uma janela de quadro filho MDI contida pela janela do quadro principal MDI. Uma janela filho MDI se parece muito com uma janela de quadro típica, mas está contida dentro de uma janela de quadro MDI em vez de ficar na área de trabalho. No entanto, a janela filho MDI não tem uma barra de menus própria. Ela precisa compartilhar a barra de menus da janela de quadro MDI que a contém.
Para obter mais informações, consulte Janelas de quadro.
Outras classes de janela derivadas de CWnd
Além das janelas de quadro, várias outras categorias principais de janelas são derivadas de CWnd
:
Exibições:
As exibições são criadas usando a classe derivada deCWnd
CView
(ou uma de suas classes derivadas). Uma exibição é anexada a um documento e atua como um intermediário entre o documento e o usuário. Uma exibição é uma janela filho (não um filho do MDI) que normalmente preenche a área do cliente de uma janela de quadro SDI ou uma janela de quadro filho MDI (ou aquela parte da área do cliente não coberta por uma barra de ferramentas ou uma barra de status).Caixas de diálogo:
Caixas de diálogo são criadas usando a classe derivada deCWnd
CDialog
.Formulários:
Exibições de formulário baseadas em recursos de modelo de caixa de diálogo, como caixas de diálogo, são criadas usando as classesCFormView
,CRecordView
ouCDaoRecordView
.Controles:
Controles como botões, caixas de listagem e caixas de combinação são criados usando outras classes derivadas deCWnd
. Consulte os Tópico sobre controles.Barras de controle:
Janelas filho que contêm controles. Exemplos incluem barras de ferramentas e barras de status. Consulte Barras de controle.
Hierarquia de classes de janela
Consulte o Gráfico de hierarquia do MFC na Referência do MFC. As exibições são explicadas na Arquitetura de documento/exibição. As caixas de diálogo são explicadas em Caixas de diálogo.
Criando suas classes de janela com finalidades especiais
Além das classes de janela fornecidas pela biblioteca de classes, você pode precisar de janelas filho com finalidades especiais. Para criar essa janela, crie sua classe derivada de CWnd
e faça dela uma janela filho de um quadro ou exibição. Tenha em mente que a estrutura gerencia a extensão da área do cliente de uma janela de quadro do documento. A maior parte da área de cliente é gerenciada por uma exibição, mas outras janelas, como barras de controle ou suas janelas personalizadas, podem compartilhar o espaço com a exibição. Talvez seja necessário interagir com os mecanismos nas classes CView
e CControlBar
para posicionar janelas filho na área de cliente de uma janela de quadro.
Criando janelas aborda a criação de objetos de janela e as janelas que eles gerenciam.