Come utilizzare i tasti di scelta rapida all'interno di una finestra di dialogo a scelta obbligatoria in Visual c ++

Traduzione articoli Traduzione articoli
Identificativo articolo: 222829 - Visualizza i prodotti a cui si riferisce l?articolo.
Nota Microsoft Visual c ++ .NET (2002) supporta sia il modello di codice gestito fornito da Microsoft .NET Framework che il modello di codice non gestito nativo di Microsoft Windows. Le informazioni contenute in questo articolo si applicano solo al codice Visual C++ non gestito.
Espandi tutto | Chiudi tutto

Sommario

Tasti di scelta rapida sono una funzionalità di interfaccia utente comune delle applicazioni di Windows; pertanto, perché limita li a solo l'applicazione? Questo articolo viene illustrato come aggiungere funzionalità chiave dei tasti di scelta rapida a qualsiasi finestra di dialogo a scelta obbligatoria.

Informazioni

Tasti di scelta rapida vengono elaborati dalla chiamata alla funzione di TranslateAccelerator() in ciclo di messaggi principale dell'applicazione. Tuttavia, per una finestra di dialogo a scelta obbligatoria viene utilizzato il il ciclo di messaggio finestra di dialogo casella manager (incorporato in Windows) per convertire e inviare i messaggi. Naturalmente, poiché questo ciclo di messaggi non è progettato per elaborare i tasti di scelta rapida, non chiama la funzione TranslateAccelerator().

Per elaborare tasti di scelta rapida in una finestra di dialogo a scelta obbligatoria, è necessario eseguire l'override PreTranslateMessage() della finestra di dialogo funzione e provare a elaborare il messaggio come un tasto di scelta rapida chiamando:: TranslateAccelerator(). Se questo metodo ha esito negativo, quindi l'elaborazione continua chiamando la classe base PreTranslateMessage().

Ai fini di questo articolo, è possibile aggiungere funzionalità principali dei tasti di scelta rapida alla finestra di dialogo AboutBox di un'applicazione MDI MFC:
  1. Creare una nuova applicazione MDI MFC denominata test.
  2. Aggiungere un pulsante, con ID di risorsa "IDC_BUTTON1", per la risorsa finestra di dialogo AboutBox.
  3. Fare doppio clic sul pulsante per aggiungere un gestore per questo pulsante e inserire il codice riportato di seguito come un indicatore che utilizza il tasto di scelta:
    AfxMessageBox("Hello");
  4. Inserire una nuova tabella di tasti di scelta rapida per la risorsa.
  5. Aggiungere un tasto di scelta rapida alla tabella associando il F5 chiave all'ID di risorsa "IDC_BUTTON1".
  6. Aggiungere il m_hAccelTable variabile membro, alla classe CAboutBox:
    HACCEL  m_hAccelTable;
  7. Inizializzare m_hAccelTable in CAboutBox::CAboutBox:
    m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
  8. Utilizzare la creazione di codice guidata (la creazione guidata classi in Visual c ++ 6.0 e versioni precedenti) per aggiungere un override di PreTranslateMessage il per il CAboutDlg.
  9. Nel metodo CAboutBox::PreTranslateMessage(), aggiungere le seguenti righe di codice:
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {
       if (m_hAccelTable) {
          if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {
             return(TRUE);
          }
       }
       return CDialog::PreTranslateMessage(pMsg);
    
    }
  10. Compilare ed eseguire CTestApp.

risultati Tasto di scelta rapida F5 Attiva ora il gestore di button1 quando è attivo il CAboutBox.

Riferimenti

Per ulteriori informazioni sulla chiave dei tasti di scelta rapida l'elaborazione nelle finestre di dialogo modali, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:
100770 INFO: utilizzo di tasti con la finestra principale di Modal Dialog Box

Proprietà

Identificativo articolo: 222829 - Ultima modifica: martedì 21 novembre 2006 - Revisione: 4.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Foundation Class Library 4.2 alle seguenti piattaforme
    • 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
Chiavi: 
kbmt kbacceleratorkey kbhowto kbkeyaccel kbuidesign KB222829 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 222829
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com