Dialog - Accerlator-HotKeys funzen net!!!



  • Hi nochmals zusammen!

    In meinem Proggy habe ich Accerlators eingebaut!
    Das heisst, die Funktion OnFileNew wird aufgerufen, wenn CTRL+N gedrückt wird!
    Also hab ich den Key CTRL+N hinzugefügt!

    Nur, wenn ich im Proggy dann CTRL+N drücke, passiert nix! Der PC gibt nur ein kurzes *ping* aus. das wars!

    Kann mir einer mal erklären, warum das net geht??



  • Ich nehme mal an, dass es sich um eine Dialoganwendung handelt, denn ansonsten sollte das problemlos funktionieren.

    Damit es bei einer Dialoganwendung auch funktioniert, sind drei Schritte notwendig:

    1. Der Dialogklasse ein Member hinzufügen:

    HANDLE m_hAccel;
    

    2. In OnInitDialog einfügen:

    m_hAccel = ::LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(ACC_RES_ID));
    

    Dabei für ACC_RES_ID die Resource-ID Deines Accelerators eintragen.

    3. Mit dem ClassWizard der Dialogklasse die PreTranslateMessage-Funktion hinzufügen, und darin:

    if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST) {
      return ::TranslateAccelerator(m_hWnd, (HACCEL__ *)m_hAccel, pMsg);
    }
    return CDialog::PreTranslateMessage(pMsg);
    


  • Danke für deine HIlfe!!!
    Es klappt! Juchuuuu!!!! 😉


Anmelden zum Antworten