C++ Win32 API - Buttons / Hotkeys

Paxo

Cadet 1st Year
Registriert
Apr. 2014
Beiträge
9
Hallo,
ich komme gerade nicht so wirklich weiter und hoffe, dass ihr mir vielleicht helfen könnt.

Ich benutzt visual studio 2013 mit der Win32 API.
Im Prinzip will ich, dass man Hotkeys und einige buttons benutzen kann.

Die Buttons funktionieren, also ich klick auf den button -> er tut was er soll.
Die Hotkeys funktionieren eigentlich auch, also ich klick zb. F1 -> hotkey tut das was er soll.

Mein Problem ist allerdings, wenn ich ein Button drücke, kann ich danach keinen Hotkey mehr betätigen. Es wäre so, als würde ich dauernd den button fixiert haben. Ich muss mit der Maus seperat in die menüleiste und dort dann den gewünschten menüpunkt auswählen. Danach gehen auch wieder die Hotkeys, bis ich ein button drücke.

Hier mal das Prinzip meines callbacks:
Code:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     switch (message){

           case WM_KEYDOWN:
                   switch(wParam){

                          //F1 knopf wird gedrückt
                          case VK_F1:
                                   MessageBox(NULL, TEXT("F1 gedrückt"), TEXT("bla"), MB_OK);
                                   break;
                   } 
                   break;

           case WM_COMMAND:
                    wmId = LOWORD(wParam);
                    switch (wmId){

                         //button wird gedrückt
                          case IDC_button:  
                                   //erhöhe zoom
                                   if (ZOOM < 130){
                                          ZOOM++;
                                   } 
                                   break;
                    }
                    break;
          default:
               return DefWindowProc(hWnd, message, wParam, lParam);
     }
     return 0;
}

scheinbar reicht der "break"-Befehl im button nicht aus. Oder ich muss noch irgendwas mit wParam anstellen, nur weiß ich einfach nicht weiter :/

mfg
 
Hi Yuuri, danke für deine Antwort.
Ich habe mittlerweile eine ziemlich simple Lösung gefunden.

Code:
case IDC_Button:
     if (ZOOM < 130){
	ZOOM++;
     }
     SetDlgItemInt(hWnd, IDC_SHOWZOOM, ZOOM, true);
     SetFocus(hWnd);
     break;

Durch SetFocus(hWnd), wird der Focus nach dem Knopfdrücken einfach wieder zum Mainwindow übergeben. Dadurch kann ich die Hotkeys wieder beliebig benutzen.

danke
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
5
Aufrufe
2.879
Zurück
Oben