CFrameWnd classe fornece a funcionalidade de uma interface de documento simples de Windows (SDI) sobreposta ou janela pop-up quadro, juntamente com os membros para gerenciar a janela.
Para criar uma janela de quadro útil para seu aplicativo, derive uma classe de CFrameWnd. Adicione variáveis de membro para a classe derivada para armazenar dados específicos para seu aplicativo. Implementar funções de membro de manipulador de mensagens e uma mensagem mapeiam na classe derivada para especificar o que acontece quando as mensagens são direcionadas para a janela.
Existem três maneiras para construir uma janela de quadro:
Indiretamente construí-la usando um modelo de documento.
Antes de chamar criar ou LoadFrame, é preciso construir o objeto de janela de quadro no heap usando o C++ novo operador. Antes de chamar de criar, você também pode registrar uma classe de janela com AfxRegisterWndClass função global para definir os estilos de ícone e classe do quadro.
Use a criar função de membro para passar parâmetros de criação do quadro como argumentos imediatos.
LoadFrame requer argumentos menos do que criare em vez disso recupera a maioria de seus valores padrão de recursos, incluindo o quadro legenda, ícone, tabela de teclas aceleradoras e menu. Para ser acessível a LoadFrame, todos esses recursos devem ter a mesma identificação de recurso (por exemplo, IDR_MAINFRAME).
Quando um objeto CFrameWnd contém modos de exibição e documentos, eles são criados indiretamente pela estrutura em vez de diretamente pelo programador. O objeto CDocTemplate orquestra a criação do quadro, a criação de exibições que contêm e a conexão dos modos de exibição para o documento apropriado. Os parâmetros do Construtor CDocTemplate especificam o CRuntimeClass das três classes envolvidas (documento, quadro e exibir). Um objeto de CRuntimeClass é usado pela estrutura para criar dinamicamente novos quadros quando especificado pelo usuário (por exemplo, usando o comando novo arquivo ou comando nova janela o Múltiplo documento interface (MDI)).
Uma classe de janela de quadro derivada de CFrameWnd deve ser declarada com DECLARE_DYNCREATE em ordem para o mecanismo RUNTIME_CLASS acima para funcionar corretamente.
Um CFrameWnd contém implementações padrão para executar as seguintes funções de uma janela principal em um aplicativo típico para Windows:
Uma janela do quadro CFrameWnd mantém registro de um ativo no momento Exibir que é independente da janela ativa do Windows ou o foco de entrada atual. Quando o quadro é reativado, o Exibir ativo é notificado, chamando CView:: OnActivateView.
Mensagens de comando e muitas mensagens de notificação de quadro comum, incluindo os tratados pelas OnSetFocus, OnHScrolle OnVScroll funções de CWnd, são delegadas por uma janela do quadro CFrameWnd para o Exibir ativo no momento.
O ativo no momento Exibir (ou atualmente ativa janela do quadro de filho MDI de um quadro MDI) pode determinar a legenda da janela do quadro. Esse recurso pode ser desabilitado desativando o bit de estilo FWS_ADDTOTITLE da janela do quadro.
Uma janela do quadro CFrameWnd gerencia o posicionamento das barras de Controlarar, exibições e outro filho windows dentro de área de cliente da janela do quadro. Uma janela do quadro também faz Ocioso-tempo atualizar da barra de ferramentas e outros botões de barra de Controlarar. Uma janela do quadro CFrameWnd também possui implementações padrão de comandos para alternar ativar e desativar a barra de ferramentas e barra de status.
Uma janela do quadro CFrameWnd gerencia a barra de menus principal. Quando um menu pop-up é exibido, a janela do quadro usa o mecanismo UPDATE_COMMAND_UI para determinar quais itens de menu devem ser habilitados, desabilitados ou verificados. Quando o usuário seleciona um item de menu, a janela do quadro atualiza a barra de status com a Cadeia de caracteres de mensagem para esse comando.
Uma janela de quadro CFrameWnd tem uma tabela de Teclas Aceleradoras opcional que converte automaticamente aceleradores de teclado.
Uma janela de quadro CFrameWnd tem um opcional ajudar identificação definida com LoadFrame que é usado para ajuda sensível ao contexto. Uma janela do quadro é o principal orchestrator semimodal Estados, como ajuda Contextoual (SHIFT + F1) e modos de visualização de impressão.
Uma janela do quadro CFrameWnd abrirá um arquivo arrastado do Gerenciador de arquivos e solto sobre a janela do quadro. Se uma extensão de arquivo é registrada e associada com o aplicativo, a janela do quadro responde ao pedido de aberto de DDE intercâmbio dinâmico de dados que ocorre quando o usuário abre um arquivo de dados no Gerenciador de arquivos ou quando a função do Windows ShellExecute é chamada.
Se a janela quadro está a janela do aplicativo principal (ou seja, CWinThread::m_pMainWnd), quando o usuário fecha o aplicativo, a janela do quadro solicita ao usuário para salvar todos os documentos modificados (para OnClose e OnQueryEndSession).
Se a janela quadro está a janela principal do aplicativo, a janela do quadro é o contexto para a execução de WinHelp. Fechar a janela do quadro será desligado WINHELP.EXE se lançou-se para obter ajuda para este aplicativo.
Não use o operador de C++ Excluir para destruir uma janela do quadro. Em vez disso, use CWnd:: DestroyWindow . A implementação de CFrameWnd de PostNcDestroy excluirá o objeto C++ quando a janela é destruída. Quando o usuário fecha a janela do quadro, o manipulador padrão de OnClose chamará DestroyWindow.
Para obter mais informações sobre CFrameWnd, consulte Tópicos de janela de quadro no Guia do programador do Visual C++.