Winapi Tabtaste

Gast #2276729
Lesenswert?

Hallo,

normalerweise erstelle ich meine Programme mit C++ und dem .net 
framework.
Zur Abwechslung sollte es für eine kleine Anwendung diesmal C und winapi 
sein. Drei Button und ein Editfeld hab ich schon.

Jetzt finde ich nichts darüber, wie man mit der Tabtaste vom einem zum 
nächsten Steuerelement springen kann.

Kann mir jemand helfen?
Persönliche Seite #2276741
Lesenswert?

>Jetzt finde ich nichts darüber, wie man mit der Tabtaste vom einem zum
>nächsten Steuerelement springen kann.
Ich glaube, das geschieht automatisch... Probiers mal aus. So wie ich 
das noch im Kopf habe, geht der von sich aus ins nächste Feld und die 
"Erkennung", welches Feld es ist, läuft dann am Ende der Eingabe über 
den Callback-Handler des jeweiligen Feldes.
Gast #2276751
Lesenswert?

> Drei Button und ein Editfeld hab ich schon.
> Jetzt finde ich nichts darüber, wie man mit der Tabtaste
> vom einem zum nächsten Steuerelement springen kann.

Hast du sie in einem Dialogklassenfenster (DialogBox, CreateDialog, 
DlgProc, WC_DIALOG, #32770) angelegt (dort wird die TAB-Taste über die 
DefDlgProc Messages WM_NEXTDLGCTL bzw. Funktion GetNextDlgTabItem 
gehandelt)

oder hast du ein normales Fenster (CreateWindow) angelegt und deine 
Buttons als Childs mit CreateWindow(...hWndMain...) eingebunden, dann 
hast du kein TAB Handling. Da du Standard-Windows-Controls verwendest, 
solltest du dann auf einen TAB-Tastendruck Event selbst herausfinden, 
welches dein nächstes Feld ist, oder mal ausprobieren, ob deine 
Anordnung so ist, daß DefDlgProc sie unter deinen Bedingungen umsetzen 
kann.
#2276822
Lesenswert?

Man kann auch bei normalen Fenstern mit Tabs zwischen den 
Kontrollelementen navigieren.

Dazu muss WS_TABSTOP als Windowstyle mit angegeben werden, wenn man die 
Elemente erzeugt. Außerdem müssen die Nachrichten in der Hauptschleife 
durch IsDialogMessage() anstatt TranslateMessage() und DispatchMessage() 
ausgewertet werden.

MfG Mark
Gast #2276873
Lesenswert?

WS_TABSTOP & IsDialogMessage() funktioniert, Mark.

Das Fenster sieht jetzt so aus:

BUTTON1     TEXTEDIT
BUTTON2
BUTTON3

Und der Focus springt von Button1 zum TextEdit zum Button2 zum TextEdit 
zu Button3.

Wie kann man die Reihenfolge festlegen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren