DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 222829 - Última revisão: terça-feira, 21 de novembro de 2006 - Revisão: 4.1

 
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.

Sumário

Teclas de aceleração são um recurso de interface de usuário comum de aplicativos do Windows; portanto, limitam-los por que a apenas o aplicativo? Este artigo mostra como adicionar funcionalidade da chave acelerador a qualquer caixa de diálogo modal.

Mais Informações

Aceleradores de teclado são processados chamando a função TranslateAccelerator() em loop de mensagem principal do aplicativo. No entanto, para uma caixa de diálogo modal, o loop de mensagem diálogo caixa gerente (embutido no Windows) é usado para converter e distribuir mensagens. Obviamente, como esse loop de mensagem não foi projetado para processar aceleradores, ele não chama a função TranslateAccelerator().

Para processar teclas aceleradoras em uma caixa de diálogo restrita, você deve substituir PreTranslateMessage() da caixa de diálogo funcionar e tente processar a mensagem como um acelerador chamando:: TranslateAccelerator(). Se esse método falhar, processamento, em seguida, continua chamando a classe base PreTranslateMessage().

Para os fins deste artigo, podemos adicionar acelerador principais funcionalidades à caixa de diálogo AboutBox de um aplicativo MDI do MFC:
  1. Crie um aplicativo MDI do MFC novo chamado Test.
  2. Adicione um botão, com ID de recurso "IDC_BUTTON1", para o recurso de caixa de diálogo AboutBox.
  3. Clique duas vezes o botão para adicionar um manipulador para este botão e insira o código a seguir como um indicador que a tecla aceleradora funciona:
    AfxMessageBox("Hello");
  4. Inserir uma nova tabela de acelerador para o recurso.
  5. Adicionar uma chave do acelerador à tabela associando o F5 chave a identificação do recurso "IDC_BUTTON1".
  6. Adicione m_hAccelTable variável, o membro, à classe CAboutBox:
    HACCEL  m_hAccelTable;
  7. Inicializar m_hAccelTable em CAboutBox::CAboutBox:
    m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
  8. Use o Assistente de código (o Assistente classe no Visual C++ 6.0 e versões anteriores) para adicionar uma substituição do PreTranslateMessage para o CAboutDlg.
  9. No método CAboutBox::PreTranslateMessage(), adicione as linhas de código a seguir:
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {
       if (m_hAccelTable) {
          if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {
             return(TRUE);
          }
       }
       return CDialog::PreTranslateMessage(pMsg);
    
    }
  10. Compile e execute CTestApp.

resultados Tecla aceleradora F5 agora aciona o manipulador de button1 quando o CAboutBox está ativo.

Referências

Para obter informações adicionais sobre tecla aceleradora de processamento em caixas de diálogo modal, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
100770  (http://support.microsoft.com/kb/100770/EN-US/ ) INFO: usando chaves de acelerador com JanelaRestrita janela de principal de caixa de diálogo

A informação contida neste artigo aplica-se a:
  • Microsoft Foundation Class Library 4.2 nas seguintes plataformas
    • Microsoft Visual C++ 4.1 Subscription
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
    • Microsoft Visual C++ .NET 2002 Standard Edition
    • Microsoft Visual C++ .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbacceleratorkey kbhowto kbkeyaccel kbuidesign KB222829 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: 222829  (http://support.microsoft.com/kb/222829/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