Zum Verwenden von Zugriffstasten innerhalb eines modalen Dialogfelds in Visual C++

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 222829 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Hinweis: Microsoft Visual C++ .NET (2002) unterstützt sowohl das verwaltete Codemodell aus dem Microsoft .NET Framework als auch das nicht verwaltete Codemodell, das in Microsoft Windows integriert ist. Die Informationen in diesem Artikel beziehen sich nur auf nicht verwalteten Visual C++-Code.
Alles erweitern | Alles schließen

Zusammenfassung

Zugriffstasten sind eine gemeinsame Benutzeroberfläche-Funktion von Windows-Anwendungen; aus diesem Grund warum begrenzen Sie nur die Anwendung? Dieser Artikel veranschaulicht, wie wichtige Funktionen von Accelerator alle modalen Dialogfeld hinzufügen.

Weitere Informationen

Zugriffstasten werden durch Aufrufen der TranslateAccelerator()-Funktion in der Anwendung Hauptmeldungsschleife verarbeitet. Allerdings wird für ein modales Dialogfeld die Meldungsschleife Dialogfeld Feld Manager (in Windows integriert) verwendet, zum Übersetzen und Senden von Nachrichten. Natürlich, da diese Meldungsschleife nicht zum Verarbeiten von Zugriffstasten ausgelegt ist, wird es nicht die Funktion TranslateAccelerator() aufgerufen.

Zugriffstasten in einem modalen Dialogfeld verarbeiten möchten, müssen Sie das Dialogfeld PreTranslateMessage() überschreiben funktionieren und versuchen Sie die Nachricht als Zugriffstaste durch den Aufruf verarbeiten:: TranslateAccelerator(). Wenn diese Methode fehlschlägt, setzt die Verarbeitung anschließend durch Aufrufen der Basisklasse PreTranslateMessage() fort.

Für die Zwecke dieses Artikels werden wichtige Funktionen von Accelerator zu der AboutBox-Dialogfeld einer MFC-MDI-Anwendung hinzufügen:
  1. Erstellen Sie eine neue MFC-MDI-Anwendung mit dem Namen Test.
  2. Hinzufügen einer Schaltfläche mit Ressource ID "IDC_BUTTON1" die AboutBox-Dialogfeldressource.
  3. Doppelklicken Sie auf die Schaltfläche hinzufügen einen Handler für diese Schaltfläche, und fügen Sie folgenden Code als Indikator, der die Zugriffstaste arbeitet:
    AfxMessageBox("Hello");
  4. Legen Sie eine neue Zugriffstastentabelle auf die Ressource.
  5. Durch Zuordnen der F5 einen Accelerator-Schlüssel zur Tabelle hinzufügen auf die Ressource-ID "IDC_BUTTON1" Schlüssel.
  6. Fügen Sie die Member Variable M_hAccelTable zur Klasse CAboutBox:
    HACCEL  m_hAccelTable;
  7. Initialisieren von M_hAccelTable in CAboutBox::CAboutBox:
    m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
  8. Verwenden Sie den Code-Assistenten (der Klassen-Assistent in Visual C++ 6.0 und früher), eine Überschreibung der PreTranslateMessage für die CAboutDlg hinzufügen.
  9. Fügen Sie in der CAboutBox::PreTranslateMessage()-Methode, die folgenden Codezeilen hinzu:
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {
       if (m_hAccelTable) {
          if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {
             return(TRUE);
          }
       }
       return CDialog::PreTranslateMessage(pMsg);
    
    }
  10. Kompilieren Sie und führen Sie CTestApp.

Ergebnisse Zugriffstaste F5 löst jetzt den Ereignishandler von button1, wenn das CAboutBox aktiv ist.

Informationsquellen

Weitere Informationen zu Zugriffstaste Verarbeitung innerhalb von modalen Dialogfeldern finden Sie in der folgenden Artikel der Microsoft Knowledge Base:
100770 Information: Verwenden von Zugriffstasten mit Modal Dialog Box-Hauptfenster

Eigenschaften

Artikel-ID: 222829 - Geändert am: Dienstag, 21. November 2006 - Version: 4.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Foundation Class Library 4.2, wenn verwendet mit:
    • 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
Keywords: 
kbmt kbacceleratorkey kbhowto kbkeyaccel kbuidesign KB222829 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 222829
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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