c ++ - Sådan navigerer du mellem kontrolelementerne i et vindue ved hjælp af TAB-tasten?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg oprettede et vindue ved at ringe CreateWindow og sætte 2 redigeringselementer på det.
Redigeringscontrollerne havde WS\_TABSTOP stil, som blev aktiveret. Jeg kunne ændre sin tekst, men navigering mellem kontroller med TAB-tasten fungerede ikke.


Jeg sætter denne kode i min meddelelsessløjfe:


MSG msg;
while ( GetMessage( &msg, NULL, 0, 0 ) )
{
    if ( !msg.hwnd || !IsDialogMessage( msg.hwnd, &msg ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }
}


Desværre fungerede navigering af TAB ikke, redigering af kontroller ændrede ikke, og det eneste der skete ved at trykke på TAB var valget af teksten af ​​første kontrol. Kan nogen hjælpe mig?

Bedste reference


Vinduet håndterer du passerer til IsDialogMessage er det dialog-lignende vindue, du vil navigere igennem. Du passerer vinduet, der modtog beskeden, hvilket sandsynligvis er redigeringskontrollen, ikke øverste niveauvindue.

Andre referencer 1


Du har to grundlæggende valg: Du kan enten sætte kontrollerne ind i en faktisk dialog (som du vil påberåbe sig med DialogBox (eller en af ​​sine nære slægtninge som DialogBoxEx) eller ellers håndtere tabbing selv.


I sidstnævnte tilfælde skal du reagere, når en tab er indtastet, og sæt fokuset på den anden kontrol. Offhand, jeg kan ikke huske, om du kan håndtere dette via WM\_NOTIFY, eller hvis du skal underklassificere kontrollerne.