Atualizando o texto de um painel de BAR de status

Este artigo explica como alterar o texto que aparece em um MFC BAR de status painel.A BAR de status — um objeto de janela de classe CStatusBar — contém várias "painéis". Cada painel é uma área retangular do BAR de status que você pode usar para exibir informações.Por exemplo, muitos aplicativos exibem o status de CAPS bloquear, NUM bloquear e outras chaves nos painéis mais à direita.Aplicativos também freqüentemente exibem texto informativo no painel à extrema esquerda (painel de 0), às vezes chamado de "painel de mensagem". Por exemplo, o padrão MFC BAR de status usa o painel da mensagem para exibir uma seqüência de caracteres explicando o menu selecionado no momento item ou o botão da BAR de ferramentas.A figura em BAR de statuss mostra um BAR de status de um aplicativo criado pelo Assistente para aplicativo MFC.

Por padrão, o MFC não habilita um CStatusBar Quando cria o painel do painel. Para ativar um painel, você deve usar o ON_UPDATE_COMMAND_UI macro para cada painel o BAR de status e atualizar os painéis. Como painéis não enviam WM_COMMAND mensagens (eles não como botões da barra de ferramentas), você deve digitar o código manualmente.

Por exemplo, suponha que um painel tem ID_INDICATOR_PAGE sistema autônomo seu identificador de comando e que ele contém o número da página corrente em um documento. O procedimento a seguir descreve como criar um novo painel na BAR de status.

Para fazer um novo painel

  1. Definir a ID de comando. do painel

    Sobre o Modo de exibição menu, clicar Modo de exibição de recurso.clicar com o botão direito do mouse no recurso de projeto e clique em Símbolos de recurso.Na caixa de diálogo símbolos de recurso, clicar New. Digite um nome de ID de comando: Por exemplo, ID_INDICATOR_PAGE. Especificar um valor para a ID ou aceite o valor sugerido pela caixa de diálogo símbolos de recurso.Por exemplo, para ID_INDICATOR_PAGE, aceite o valor padrão. fechar a caixa de diálogo símbolos de recurso.

  2. Defina uma seqüência de caracteres padrão para exibir no painel.

    Com o modo de exibição de recurso em aberto, clicar duas vezes em Tabela de seqüência de caracteres na janela que lista tipos de recursos para seu aplicativo.Com o Tabela de seqüência de caracteres editor em aberto, escolher Nova string from the Inserir menu.Na janela Propriedades de String, selecionar ID de comando do seu painel (por exemplo, ID_INDICATOR_PAGE) e digite um valor de seqüência de caracteres padrão, sistema autônomo "Página". fechar o editor de seqüência de caracteres.(Você precisa de uma seqüência de caracteres padrão para evitar um erro do compilador).

  3. Adicionar o painel à indicadores matriz.

    No arquivo MAINFRM.CPP, localizar o indicadores matriz.Essa matriz lista IDs de comando para todos os indicadores da BAR de status, na ordem da esquerda para direita.No ponto apropriado na matriz, digite ID de comando do seu painel, sistema autônomo mostrado aqui para ID_INDICATOR_PAGE:

    static UINT indicators[] =
    {
       ID_SEPARATOR,           // status line indicator
       ID_INDICATOR_CAPS,
       ID_INDICATOR_NUM,
       ID_INDICATOR_SCRL,
       ID_INDICATOR_PAGE,
    };
    

A maneira recomendada para exibir texto em um painel é chamar o SetText função de membro de classe CCmdUI em uma função de manipulador de atualização para o painel. Por exemplo, convém configurar um número inteiro variável m_nPage que contém o número da página corrente e uso SetText para conjunto texto do painel para uma versão de cadeia de caracteres do número.

Observação:

O SetText abordagem é recomendada.É possível executar essa tarefa em um nível inferior ligeiramente chamando o CStatusBar função de membro SetPaneText. Mesmo assim, você ainda precisa de um manipulador de atualização.Sem tal um manipulador para o painel, MFC desativa automaticamente o painel, apagando seu conteúdo.

O procedimento a seguir mostra como usar uma função de manipulador de atualização para exibir texto em um painel.

Para tornar um painel Exibir texto

  1. Adicione um manipulador de atualização de comando para o comando.

    Adicionar manualmente um protótipo para o manipulador, sistema autônomo mostrado aqui para ID_INDICATOR_PAGE (em MAINFRM.H):

    afx_msg void OnUpdatePage(CCmdUI *pCmdUI);
    
  2. No arquivo .CPP apropriado, adicione definição do manipulador, conforme mostrado aqui para ID_INDICATOR_PAGE (em MAINFRM.CPP):

    void CMainFrame::OnUpdatePage(CCmdUI *pCmdUI)
    {
        pCmdUI->Enable(); 
        CString strPage;
        strPage.Format(_T("Page %d"), m_nPage); 
        pCmdUI->SetText(strPage); 
    }
    

    As três últimas linhas desse manipulador são o código que exibe o texto.

  3. O MAP da mensagem apropriado, adicione o ON_UPDATE_COMMAND_UI macro, sistema autônomo mostrado aqui para ID_INDICATOR_PAGE (em MAINFRM.CPP):

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

Depois de definir o valor de m_nPage variável de membro (de classe CMainFrame), essa técnica faz com que o número de página aparecem no painel durante o processamento de ociosidade da mesma maneira que o aplicativo atualiza outros indicadores. If m_nPage as alterações, a tela é alterada durante o próximo loop ocioso.

O que você deseja saber mais sobre?

Consulte também

Conceitos

Implementação BAR de status no MFC

Referência

Classe CStatusBar