DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 98598 - Última revisão: quinta-feira, 5 de janeiro de 2006 - Revisão: 4.0

 

Nesta página

Observação Microsoft Visual C++ .NET (2002) oferece suporte o modelo de código gerenciado que é fornecido pelo Microsoft .NET Framework e o modelo de código do Windows de Microsoft nativo não gerenciado. As informações neste artigo se aplicam somente ao código do Visual C++ não gerenciado.

Observação Microsoft Visual C++ 2005 oferece suporte o modelo de código gerenciado que é fornecido pelo Microsoft .NET Framework e o modelo de código do Windows de Microsoft nativo não gerenciado.

Sumário

A classe CFormView fornece um método conveniente para colocar controles em um modo de exibição que se baseia em um modelo de caixa de diálogo. O procedimento geral para usar um CFormView é descrito na documentação para a classe e é ilustrado nos aplicativos de exemplo VIEWEX e CHKBOOK fornecidos com o Microsoft Foundation Classes (MFC) versões 2.x e acima. No entanto, esses aplicativos Demonstre não fazer o tamanho inicial da janela de quadro para ser o mesmo que o tamanho inicial do formulário.

A seção a seguir lista as etapas necessárias para oferecer suporte a criação de uma interface de documento único (SDI) ou vários documento MDI (interface) aplicativo baseado em um CFormView, dimensionar a janela de quadro inicial em torno do formulário, alterar o estilo do quadro e fechando um documento MDI usando um botão no formulário.

Mais Informações

As etapas a seguir descrevem como criar um AppWizard MFC aplicativo usando o CFormView como o modo de exibição padrão:
  1. Use o AppWizard para gerar um aplicativo SDI ou MDI. Isso insere um modelo de caixa de diálogo com os estilos corretos definido para o arquivo de recurso do seu projeto.

    o visual Studio 6.0 :

    Na etapa 6 do AppWizard, selecione a classe de modo de exibição. Na caixa de combinação classe base , selecione CFormView para especificar CFormView como a classe base.

    o visual Studio .NET ou Visual Studio 2005 :

    Na etapa 1 do AppWizard, selecione Classes geradas . Na caixa de combinação classe base , selecione CFormView para especificar CFormView como a classe base.
  2. Substituir a função de membro OnUpdate() e chamar UpdateData() conforme documentado na documentação do CFormView para atualizar as variáveis de membro com os dados do documento atual e para executar dados da caixa de diálogo (DDX) do exchange.

    Observação : UpdateData não é virtual e chamar a classe base garante que a classe derivada DoDataExchange é chamado pelo polimorfismo padrão. Os estados de documentação CFormView para chamar, não substituir UpdateData.
  3. Se você deseja definir o tamanho inicial do modo de exibição formulário, substituir a função OnInitialUpdate(). O texto abaixo fornece informações adicionais sobre esta etapa, que é um pouco diferente em um aplicativo SDI ou MDI.

Alterar o tamanho de um quadro SDI principal em um CFormView

Para alterar o tamanho do quadro principal de um aplicativo SDI (que usa CFormView como seu modo de exibição de classe) para ser o tamanho apropriado para o formulário criado no aplicativo Studio, substituir a função OnInitialUpdate() em sua classe derivada de CFormView, da seguinte maneira:
      void CMyFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         GetParentFrame()->RecalcLayout();
         ResizeParentToFit(); // default argument is TRUE
      }
				
ResizeParentToFit() A função não impede que o formulário alterar tamanho quando o usuário altera o tamanho do quadro principal aplicativo (barras de rolagem são adicionadas automaticamente se necessário). Para modificar o estilo da janela do quadro que é o pai de um modo de formulário, você pode substituir a função PreCreateWindow() a classe CMainFrame gerada pelo AppWizard. Por exemplo, para remover o estilo WS_THICKFRAME e impedir que o usuário altere o tamanho da janela, declare PreCreateWindow() em MAINFRM.H e adicione o código a seguir a MAINFRM.CPP:
      BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)
      {
         cs.style &= ~WS_THICKFRAME;
         return CFrameWnd::PreCreateWindow(cs);
      }
				

Alterar o tamanho de um quadro de filho MDI em um CFormView

O processo de alterar o tamanho de um quadro de filho MDI é semelhante a alterar o tamanho de um quadro principal para um aplicativo SDI, conforme explicado acima. No entanto, a chamada RecalcLayout() não é necessária.

Para alterar o tamanho de um quadro de filho MDI ao redor de um modo de exibição formulário, substitua a função OnInitialUpdate() em sua classe derivada de CFormView da seguinte maneira:
      void CMDIFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         ResizeParentToFit(); // Default argument is TRUE.
      }
				
se o aplicativo substitui o argumento padrão para a função ResizeParentToFit(), essencialmente as mesmas conseqüências ocorrerem como um aplicativo SDI, conforme explicado acima. Além disso, a janela filho pode ser muito grande para o quadro principal MDI delimitador ou para a tela inteira.

Para alterar o estilo do quadro MDI filho (por exemplo, para remover o estilo WS_THICKFRAME; portanto, o usuário não pode alterar o tamanho da janela), derivar uma classe da janela filho MDI e substituir a função PreCreateWindow conforme demonstrado no exemplo SDI acima.

Fechar um formulário MDI com um botão

Para criar um botão em um formulário que fecha o documento, adicione um manipulador de mensagem para a mensagem BN_CLICKED à classe CFormView. Verifique se os botões no CFormView não tem os identificadores IDOK ou IDCANCEL padrão. Em caso afirmativo, entradas incorretas no mapa da mensagem e funções incorretas para os botões serão criadas.

Depois que o manipulador de mensagem estiver no lugar, você pode simular o comando Fechar no arquivo de menu com o código a seguir:
      void CMyForm::OnClickedButton1()
      {
         PostMessage(WM_COMMAND, ID_FILE_CLOSE);
      }
				
esse método para fechar um formulário solicitará a você salvar o arquivo se a função de membro IsModified() associada ao documento retornará verdadeiro.

A informação contida neste artigo aplica-se a:
  • Microsoft Foundation Class Library 4.2 nas seguintes plataformas
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.5 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ .NET 2003 Standard Edition
    • Microsoft Visual C++ .NET 2002 Standard Edition
    • Microsoft Visual C++ 2005 Express Edition
Palavras-chave: 
kbmt kbdocview kbhowto kbmdi kbuidesign KB98598 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 98598  (http://support.microsoft.com/kb/98598/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store