Knapptillstånd

I det här avsnittet beskrivs hur valet av en knapp ändrar dess tillstånd och hur programmet ska svara.

Avsnittet består av följande ämnen:

Knappval

Användaren kan välja en knapp på tre sätt: genom att klicka på den med musen, genom att tabba till den och sedan trycka på RETUR-tangenten eller (om knappen är en del av en grupp som definieras av WS_GROUP formatmall) genom att tabba till den valda knappen i gruppen och använda piltangenterna för att flytta inom gruppen. De två tabbningsmetoderna är en del av det fördefinierade tangentbordsgränssnittet som tillhandahålls av systemet. En fullständig beskrivning av det här gränssnittet finns i dialogrutor.

Om du väljer en knapp orsakas vanligtvis följande händelser:

  • Systemet ger knappen tangentbordsfokus.
  • Knappen skickar ett meddelande till det överordnade fönstret för att meddela den om markeringen.
  • Det överordnade fönstret (eller systemet) skickar knappen ett meddelande om att ändra dess tillstånd.
  • Det överordnade fönstret (eller systemet) ommålar knappen för att återspegla dess nya tillstånd.

Element i ett knapptillstånd

En knapps tillstånd kan kännetecknas av dess fokustillstånd, push-tillstånd och kontrolltillstånd.

Fokustillstånd

Fokustillståndet gäller för en kryssruta, en alternativknapp, en push-knapp eller en ägarritad knapp. En knapp får tangentbordsfokus när användaren väljer den och förlorar fokus när användaren väljer en annan kontroll. Endast en kontroll kan ha tangentbordsfokus i taget.

När en knapp har tangentbordsfokus markerar systemet vanligtvis text, ikon eller bitmapp för en knapp genom att omge den med en prickad linje. Dessutom har en tryckknapp en tung mörk kantlinje när den har fokus. Systemet ändrar automatiskt markeringar för en automatisk knapp, men programmet måste ändra markeringar för en icke-automatisk knapp genom att skicka meddelanden.

Push-tillstånd

Push-tillståndet gäller för en kryssruta, en alternativknapp eller en kryssruta med tre tillstånd, men gäller inte för andra knappar. Push-läget för en knapp kan antingen tryckas eller inte push-överföras. När en tryckknapp (eller någon knapp med BS_PUSHLIKE stil) trycks, ritas knappen som en nedsänkt knapp. När den inte trycks ut ritas den som en upphöjd knapp. När en kryssruta, en alternativknapp eller en kryssruta med tre tillstånd har klickats ned är knappens bakgrund nedtonad. När den inte trycks ned är knappens bakgrund inte nedtonad.

Kontrollera tillstånd

Kryssrutan gäller för en kryssruta, en alternativknapp eller en kryssruta med tre tillstånd, men gäller inte för andra knappar. Tillståndet kan markeras, avmarkeras eller (för kryssrutor med tre tillstånd) vara obestämt. En kryssruta är markerad när den innehåller en bockmarkering och avmarkeras när den inte gör det. En alternativknapp kontrolleras när den innehåller en svart punkt. det rensas när det inte gör det. En kryssruta med tre tillstånd är markerad när den innehåller en bockmarkering, avmarkeras när den inte gör det och är obestämd när den innehåller en nedtonad ruta. Systemet ändrar automatiskt kontrolltillståndet för en automatisk knapp, men programmet måste ändra kontrolltillståndet för en icke-automatisk knapp.

Ändringar i ett knapptillstånd

När användaren väljer en knapp är det vanligtvis nödvändigt att ändra ett eller flera av knappens tillståndselement. Systemet ändrar automatiskt fokustillståndet för alla knapptyper, push-tillstånd för push-knappar eller knappar med BS_PUSHLIKE formatmall och kontrolltillståndet för alla automatiska knappar. Programmet måste göra alla andra tillståndsändringar med hänsyn till knappens typ, format och aktuella tillstånd. I följande lista visas de tillståndselement som måste ändras för varje knapptyp:

  • En kryssruta måste ändra bocktillståndet.
  • En alternativknapp måste ändra kontrolltillståndet. Det kan också vara nödvändigt att ändra kontrolltillståndet för andra radioknappar i samma grupp för att säkerställa att radioknapparna är ömsesidigt uteslutande.
  • Eftersom tillståndet för en ägarritad knapp är programberoende kan det som programmet måste ändra i knappen variera. Inga element i en gruppruta får ändras eftersom användarna inte kan välja grupprutor.

Ett program kan fastställa en knapps tillstånd genom att skicka ett BM_GETCHECK eller BM_GETSTATE meddelande. programmet kan ange en knapps tillstånd genom att skicka ett BM_SETCHECK eller BM_SETSTATE meddelande.