Atualizando o texto de um painel de barra de Status
Este artigo explica como alterar o texto que aparece em um painel de barra de status do MFC.Uma barra de status — um objeto window da classe CStatusBar — contém vários "painéis". Cada painel é uma área retangular da barra de status que você pode usar para exibir informações.Por exemplo, muitos aplicativos exibem o status de CAPS LOCK, NUM LOCK e outras chaves nos painéis à direita.Aplicativos também geralmente exibir texto informativo no painel da esquerda (painel 0), algumas vezes chamado de "painel de mensagem". Por exemplo, a barra de status do MFC padrão usa o painel de mensagem para exibir uma seqüência de caracteres explicando o botão de barra de ferramentas ou item de menu selecionado no momento.A Figura do Barras de Status mostra uma barra de status de um aplicativo MFC criado pelo Assistente de aplicativo.
Por padrão, o MFC não permite uma CStatusBar painel quando cria o painel.Para ativar um painel, você deve usar o ON_UPDATE_COMMAND_UI macro para cada painel de status da barra e atualizar os painéis.Porque os painéis não enviam WM_COMMAND mensagens (eles não são como botões da barra de ferramentas), você deve digitar o código manualmente.
Por exemplo, suponha que tem um painel ID_INDICATOR_PAGE como seu identificador de comando e que ele contém o número da página atual em um documento.O procedimento a seguir descreve como criar um novo painel na barra de status.
Para fazer um novo painel
Definir ID de comando. do painel
No modo menu, clique em Exibição de recurso.O recurso de projeto com o botão direito e clique em Símbolos de recurso.Na caixa de diálogo símbolos de recurso, clique em New.Digite um nome de ID de comando: por exemplo, ID_INDICATOR_PAGE.Especifique um valor para a identificação 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.Feche a caixa de diálogo símbolos de recurso.
Defina uma seqüência padrão para exibir no painel.
Com a exibição de recurso aberto, clique 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 aberto, escolha Nova seqüência de do Inserir menu.Na janela Propriedades de cadeia de caracteres, selecione a identificação de comando do painel (por exemplo, ID_INDICATOR_PAGE) e digite um valor de seqüência de caracteres padrão, como "Página".Feche o editor de seqüência de caracteres.(Você precisa de uma seqüência de caracteres padrão para evitar um erro de compilador).
Adicionar um painel para o indicadores matriz.
No arquivo MAINFRM.CPP, localize o indicadores matriz.Essa matriz lista IDs de comando para todos os indicadores da barra de status, na ordem da esquerda para a direita.No ponto apropriado na matriz, insira a ID de comando do painel, conforme 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 da classe CCmdUI em uma função de manipulador de atualização para o painel.Por exemplo, convém definir uma variável integer m_nPage que contém o número da página atual e o uso SetText para definir o 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 ligeiramente inferior, 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 apagar 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
Adicione um manipulador de atualização de comando para o comando.
Adicionar manualmente um protótipo de manipulador, conforme mostrado aqui para ID_INDICATOR_PAGE (em MAINFRM.H):
afx_msg void OnUpdatePage(CCmdUI *pCmdUI);
No apropriado.CPP arquivo, adicionar a 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.
No mapa de mensagem apropriado, adicione o ON_UPDATE_COMMAND_UI macro, como 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 (da classe CMainFrame), essa técnica faz com que o número de página apareça no painel durante o processamento ocioso da mesma maneira que o aplicativo atualiza outros indicadores.Se m_nPage alterações, as alterações de exibição durante o próximo loop ocioso.