Button lassen sich nicht mit Tabulatortaste ansprechen
-
Hallo,
Ich hab in ein Programm 2 Button Programmiert.
Der eine Button startet ein Fortschrittsanzeige und der andere beendet das Programm.
Leider kann man im Programm mit der Tabulatortaste nicht von einem Button zum anderen wechsel,
so wie das in vielen Windows Programmen der Fall ist.Hier ein Ausschnitt aus dem Code:
hwndButton = CreateWindow ("button", "Prozessor &testen", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE | WS_CHILD, 10, 220, 140, 26, hWnd,(HMENU)11 , Instanz, NULL); SendMessage(hwndButton, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE); //Button Schrift ändern hwndButton = CreateWindow ("button", "Programm b&eenden", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE | WS_CHILD, 157, 220, 140, 26, hWnd,(HMENU)13 , Instanz, NULL); SendMessage(hwndButton, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE); //Button Schrift ändern
Woran kann das liegen?
Gruß Anktech
-
-
Hallo Nathan
Der Link hat mir sehr geholfen.
Der auf dieser Seite weiterführende Link, brachte die Lösung:
http://support.microsoft.com/kb/71450Danke für die Hilfe
-
Jetzt habe ich noch eine Frage.
Wenn ich das Programm gestartet habe, muss ich jetzt erst die Tabulator Taste drücken, bevor der Button, mit der Enter Taste angesprochen werden kann.Gibt es die Möglichkeit, dass ich nach den Programmstart, den Button, ohne die Tabulator Taste drücken zu müssen, ansprechen kann?
-
...
-
SetFocus(hwndButton) --> setzt den Focus auf den Button
SendMessage(hwndButton, BM_CLICK, 0, 0) --> löst einen Click aus, was genau steht in der msdnVielleicht erklärst du etwas präziser die Zusatzfrage. Die WinApi ist allein message-gesteuert, die events (Ereignisse) auf die messages müssen ergänzt werden.
-
Warum benutzt Du keinen Dialog?
Der macht das alles für Dich...
-
Hallo, danke für eure Hilfe
Ich habe das, dank eurer Hilfe, mit folgender Lösung hin bekommen:hwndButton = CreateWindow ("button", "Prozessor &testen", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE | WS_CHILD, 10, 220, 140, 26, hWnd,(HMENU)11 , Instanz, NULL); //Button Schrift ändern //..................... SendMessage(hwndButton, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE); //setzt den Fokus auf den Button so das man ihm mit der Enter Taste starten kann. //.................... SetFocus (hwndButton); //Markiert den Button um den SetFokus wirksam werden zu lassen. //..................... SendMessage(hwndButton, BM_SETSTYLE, (WPARAM)BS_DEFPUSHBUTTON, TRUE); hwndButton = CreateWindow ("button", "Programm b&eenden", BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE | WS_CHILD, 157, 220, 140, 26, hWnd,(HMENU)13 , Instanz, NULL); //Button Schrift ändern //...................... SendMessage(hwndButton, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);
@berniebutt wenn ich SendMessage(hwndButton, BM_CLICK, 0, 0) verwende,
hat das den Effekt das der Button , bei Programmstart, ohne Zutun den Anwenders gedrückt wird.@Martin Meinst du Dialogfenster?
-
Ja!