Como utilizar teclas de atalho numa caixa de diálogo modal no Visual C++

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 222829
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Nota Microsoft Visual C++ .NET (2002) suporta o modelo de código gerido que é fornecido pelo Microsoft .NET Framework e o modelo de código do Microsoft Windows nativo não gerido. As informações neste artigo aplicam-se apenas ao código de Visual C++ não gerido.
Sumário
Teclas de atalho são uma funcionalidade de interface de utilizador comum de aplicações do Windows; por conseguinte, limitá-los porque apenas a aplicação? Este artigo mostra como adicionar funcionalidades chave do atalho a qualquer caixa de diálogo modal.
Mais Informação
Aceleradores de teclado são processados pelo chamar a função TranslateAccelerator() num ciclo de mensagem principal da aplicação. No entanto, para uma caixa de diálogo modal, o ciclo de mensagem do Gestor do diálogo caixa (incorporado no Windows) é utilizado para converter e envio de mensagens. Obviamente, porque este ciclo de mensagem não foi concebido para processar aceleradores, não chama a função TranslateAccelerator().

Para processar combinações de teclas numa caixa de diálogo modal, tem de substituir PreTranslateMessage() a caixa de diálogo funcionar e tentar processar a mensagem como um atalho chamando:: TranslateAccelerator(). Se este método falhar, em seguida, processar continua chamando a classe base PreTranslateMessage().

Para efeitos deste artigo, é adicionar funcionalidade chave acelerador à caixa de diálogo AboutBox de uma aplicação MFC MDI:
  1. Crie uma nova aplicação MFC MDI nome Test.
  2. Adicione um botão com o ID do recurso "IDC_BUTTON1" ao recurso de caixa de diálogo AboutBox.
  3. Faça duplo clique no botão para adicionar uma rotina de tratamento para este botão e insira o seguinte código como um indicador que a tecla de atalho funciona:
    AfxMessageBox("Hello");
  4. Inserir uma nova tabela Accelerator para o recurso.
  5. Adicionar uma chave de acelerador à tabela, associando a F5 chave o ID do recurso "IDC_BUTTON1".
  6. Adicionar m_hAccelTable variável, o membro, a classe CAboutBox:
    HACCEL  m_hAccelTable;
  7. Inicializar m_hAccelTable em CAboutBox::CAboutBox:
    m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
  8. Utilize o Assistente de código (a classe de assistente no Visual C++ 6.0 e versões anteriores) para adicionar uma substituição do PreTranslateMessage para o CAboutDlg.
  9. Método CAboutBox::PreTranslateMessage(), adicione as seguintes linhas de código:
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {   if (m_hAccelTable) {      if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {         return(TRUE);      }   }   return CDialog::PreTranslateMessage(pMsg);}
  10. Compilar e executar CTestApp.

resultados Tecla de atalho F5 agora acciona a rotina de tratamento de button1 quando o CAboutBox está activo.
Referências
Para obter informações adicionais sobre a tecla de atalho nas caixas de diálogo modal de processamento, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
INFO 100770: utilização de chaves Accelerator com janela de principal de caixa de diálogo modal
diálogo modal acelerador

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 222829 - Última Revisão: 12/05/2015 13:27:29 - Revisão: 4.1

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbacceleratorkey kbhowto kbkeyaccel kbuidesign KB222829 KbMtpt
Comentários