Como alterar o texto de quadro de um com base em MFC MDI filho do Windows

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: 99182
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
Um usuário pode ser desejável para alterar o título de uma janela filho com base em MFC. Para fazer isso, PreCreateWindow() deve ser substituído para o quadro filho e OnInitialUpdate() deve ser substituído para o modo de exibição.
Mais Informações
Essas são as etapas necessárias para alterar o título de um quadro de janela filho do vários documento MDI (interface). Quando fazer isso, siga as regras de "O Windows Interface: um aplicativo Design Guide" para títulos de quadro filho, que informa o seguinte:
   ...a document window title bar should contain a caption that   displays the name of the document in the window.				
adicionar suas informações personalizadas além.
  1. Crie um aplicativo MDI do MFC.
  2. Adicione uma nova classe com base em CMDIChildWnd. Essas etapas pressupõem que a classe é denominada CMyChildFrame.
  3. Escolha o arquivo .CPP principal do projeto e substituir a classe CMDIChildWnd na chamada para a função AddDocTemplate() para a nova classe que você criou.
  4. Inclua o arquivo .H recém-criado na parte superior do arquivo .CPP principal do projeto.
  5. Escolha o arquivo .H na lista de projeto para a classe recém-criada e adicione a seguinte linha à seção implementação protegido:
          virtual BOOL PreCreateWindow(CREATESTRUCT &cs);						
    Observação : com Visual C++ versões 4.x ou 5.0, você pode usar ClassWizard fazer acima.
  6. Escolha o arquivo .CPP na lista de projeto para a classe recém-criada e adicione o seguinte ao final do arquivo:
          BOOL CMyChildFrame::PreCreateWindow(CREATESTRUCT &cs)      {      // Do default processing.         if(CMDIChildWnd::PreCreateWindow(cs)==0) return FALSE;         return TRUE;      }						
    onde CMyChildFrame é o nome classe de sua classe recém-criado. Esta função chama a versão da classe base para a função PreCreateWindow().
  7. Adicione a seguinte linha de código a função PreCreateWindow() recém-criada imediatamente após a chamada padrão para CMDIChildWnd::PreCreateWindow():
          cs.style&=~(LONG)FWS_ADDTOTITLE;						
  8. Escolha o arquivo a .H correspondente à janela de visualização do seu aplicativo e adicione o seguinte código à seção pública implementação:
          virtual void OnInitialUpdate();						
    Observação : com Visual C++ versões 4.x ou 5.0, você pode usar ClassWizard fazer acima.
  9. Escolha o arquivo .CPP correspondente a janela de visualização do seu aplicativo e adicione o código a seguir o final do arquivo:
          void CMyAppView::OnInitialUpdate()      {         // Do default processing.            CView::OnInitialUpdate();      }						
    onde CMyAppView é a classe modo de exibição para o aplicativo.
  10. Adicione o código de personalização. Lembre-se seguir as regras de "O Windows Interface: um aplicativo Design Guide" para títulos de quadro filho. Em seguida adicione suas informações personalizadas, além para que, imediatamente após a chamada padrão para CView::OnInitialUpdate(). Um exemplo disso é:
          GetParent()->SetWindowText(GetDocument()->GetTitle()+         " - This is a test!");						
  11. Crie o programa.
  12. Executá-lo e você verá a alteração implementada. Neste exemplo, a primeira exibição exibirá "Myapp1 - isto é um teste!". Modos de exibição adicionais serão idênticos, exceto para o nome do documento (Myapp1).
Observação : é necessário substituir OnInitialUpdate em vez de OnCreate porque o documento não foi instanciado e, portanto, chamar GetTitle() retornaria uma seqüência vazia.

Observação : ele também pode ser necessário substituir CDocument::CanCloseFrame() se vários modos de exibição do mesmo documento estiverem abertos. Isso ocorre porque o CMDIChildWnd membro m_nWindow não é atualizado se FWS_ADDTOTITLE não estiver definido para o quadro filho MDI. Isso impede que a caixa de diálogo "Salvar arquivo" chegando quando qualquer modo de exibição seja o último aberto de modo de exibição para o documento é fechado.

Isso não é aplicada para Visual C++ para Windows, versão 1.52 e Visual C++ 32-bit Edition, versões 2.10 e acima. O comportamento de m_nWindows foi modificado nessas versões para tratar corretamente esse cenário.

A função substituída teria esta aparência:
      BOOL CMyDoc::CanCloseFrame(CFrameWnd* pFrameArg)      {         ASSERT_VALID(pFrameArg);         UINT iCount = 0;         POSITION pos = GetFirstViewPosition();         while (pos != NULL)         {            CView* pView = GetNextView(pos);            ASSERT_VALID(pView);            CFrameWnd* pFrame = pView->GetParentFrame();            // assume frameless views are ok to close            if (pFrame != NULL)            {               // assumes 1 document per frame               ASSERT_VALID(pFrame);               iCount++;          }      }          if ( iCount > 1 )            return TRUE;         // otherwise only one frame that we know about         return SaveModified();      }				

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 99182 - Última Revisão: 12/04/2015 09:28:04 - Revisão: 3.2

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbdocview kbhowto kbmdi kbuidesign KB99182 KbMtpt
Comentários