Gombállapotok
Ez a szakasz azt ismerteti, hogyan változtatja meg a gomb állapotát és az alkalmazás válaszát.
A szakasz a következő témakörökből áll:
Gomb kijelölése
A felhasználó háromféleképpen jelölhet ki egy gombot: az egérrel való kattintással, a lapozással, majd az ENTER billentyű lenyomásával, vagy (ha a gomb a WS_GROUP stílus által meghatározott csoport része) úgy, hogy a csoport kijelölt gombjára kattint, és a nyílbillentyűkkel lépked a csoporton belül. A két lapozási módszer a rendszer által biztosított előre definiált billentyűzetfelület része. A felület teljes leírását a párbeszédpanelekcímű témakörben talál.
A gomb kiválasztása általában a következő eseményeket okozza:
- A rendszer a billentyűzet fókuszát adja a gombnak.
- A gomb egy üzenetet küld a szülőablakának, amely értesíti a kijelölésről.
- A szülőablak (vagy a rendszer) üzenetet küld a gombnak az állapotának módosításához.
- A szülőablak (vagy a rendszer) újrafesti a gombot az új állapotának megfelelően.
Gombállapot elemei
A gomb állapotát a fókuszállapot, a leküldési állapot és az ellenőrzés állapota is jellemezheti.
Fókusz állapota
A fókusz állapota egy jelölőnégyzetre, választógombra, nyomógombra vagy tulajdonos által rajzolt gombra vonatkozik. Egy gomb megkapja a billentyűzetfókuszt, amikor a felhasználó kijelöli, és elveszíti a fókuszt, amikor a felhasználó másik vezérlőt választ. Egyszerre csak egy vezérlővel lehet fókuszban a billentyűzet.
Ha egy gomb fókusza a billentyűzeten van, a rendszer általában pontozott vonallal körülvesz egy gomb szövegét, ikonját vagy bitképét. Emellett a nyomógombok erős sötét szegéllyel is rendelkeznek, amikor a fókuszt helyezik el. A rendszer automatikusan módosítja az automatikus gomb kiemelését, de az alkalmazásnak üzenetek küldésével módosítania kell a nem automatikus gomb kiemelését.
Leküldéses állapot
A leküldéses állapot a nyomógombra, a jelölőnégyzetre, a választógombra vagy a háromállapotú jelölőnégyzetre vonatkozik, de más gombokra nem vonatkozik. Egy gomb leküldéses állapota leküldhető vagy nem leküldhető. A leküldéses gomb (vagy a BS_PUSHLIKE stílussal rendelkező bármely gomb) leküldésekor a gomb elsüllyedt gombként lesz rajzolva. Ha a rendszer nem küldi el, a rendszer emelt gombként rajzolja meg. Ha bejelöl egy jelölőnégyzetet, választógombot vagy háromállapotú jelölőnégyzetet, a gomb háttere szürkén jelenik meg. Ha nincs leküldés, a gomb háttere nem szürkén jelenik meg.
Állapot ellenőrzése
A jelölőnégyzet, a választógomb vagy a háromállapotú jelölőnégyzetre érvényes, más gombokra azonban nem vonatkozik. Az állapot ellenőrizhető, törölhető vagy (háromállapotú jelölőnégyzetek esetén) meghatározatlan. A jelölőnégyzet bejelölve van, ha pipát tartalmaz, és ha nem, akkor törlődik. A választógomb akkor van bejelölve, ha fekete elemet tartalmaz; akkor törlődik, ha nem. A háromállapotú jelölőnégyzet akkor van bejelölve, ha pipát tartalmaz, és ha nem, akkor törlődik, és meghatározhatatlan, ha szürkét tartalmaz. A rendszer automatikusan módosítja egy automatikus gomb ellenőrzési állapotát, de az alkalmazásnak módosítania kell egy nem automatikus gomb ellenőrzési állapotát.
Gombállapot módosítása
Amikor a felhasználó kiválaszt egy gombot, általában módosítani kell a gomb egy vagy több állapotelemét. A rendszer automatikusan módosítja az összes gombtípus fókuszállapotát, a leküldéses vagy a BS_PUSHLIKE stílusú gombok leküldéses állapotát, valamint az összes automatikus gomb ellenőrzési állapotát. Az alkalmazásnak minden más állapotmódosítást végre kell hajtania, figyelembe véve a gomb típusát, stílusát és aktuális állapotát. Az alábbi lista az egyes gombtípusokhoz módosítani kívánt állapotelemeket tartalmazza:
- A jelölőnégyzetnek módosítania kell a jelölőnégyzet állapotát.
- A választógombnak módosítania kell az ellenőrzési állapotot. A választógombok kölcsönösen kizáró jellegének biztosítása érdekében szükség lehet az ugyanabban a csoportban lévő más választógombok ellenőrzési állapotának módosítására is.
- Mivel a tulajdonos által rajzolt gomb állapota alkalmazásfüggő, az alkalmazásnak módosítania kell a gombot. A csoportmezők elemeit nem kell módosítani, mert a felhasználók nem jelölhetnek ki csoportmezőt.
Egy alkalmazás BM_GETCHECK vagy BM_GETSTATE üzenet küldésével meghatározhatja a gomb állapotát; az alkalmazás BM_SETCHECK vagy BM_SETSTATE üzenet küldésével beállíthatja a gomb állapotát.