Megosztás:


Tudnivalók a statikus vezérlőkről

Az alkalmazások gyakran statikus vezérlőket használnak más vezérlők címkézéséhez vagy vezérlőcsoportok elválasztásához. Bár a statikus vezérlők gyermekablakok, nem jelölhetők ki. Ezért nem kapják meg a billentyűzetfókuszt, és nem rendelkeznek billentyűzet-kezelőfelülettel. A SS_NOTIFY stílussal rendelkező statikus vezérlők egérbemenetet kapnak, amely értesíti a szülőablakot, amikor a felhasználó rákattint vagy duplán kattint a vezérlőre. A statikus vezérlők a STATIC ablakosztályhoz tartoznak.

Bár a statikus vezérlők egymást átfedő, előugró és gyermekablakokban is használhatók, párbeszédpaneleken való használatra lettek kialakítva, ahol a rendszer szabványosítja a viselkedésüket. Ha a párbeszédpaneleken kívül statikus vezérlőket használ, a fejlesztők növelik annak kockázatát, hogy az alkalmazás nem megfelelő módon viselkedjen. A fejlesztők általában statikus vezérlőket használnak a párbeszédpaneleken, vagy a SS_OWNERDRAW stílust használják testre szabott statikus vezérlők létrehozásához.

Ebben a szakaszban az alábbi témaköröket tárgyaljuk.

Statikus vezérlőtípusok

A statikus vezérlőknek négy típusa van. Mindegyik típus rendelkezik egy vagy több Statikus Vezérlőstílussal.

Egyszerű grafikus statikus vezérlő

Egy egyszerű grafikus statikus vezérlő egy keretet vagy egy kitöltött téglalapot jelenít meg. A keret számos stílusban rajzolható, beleértve a fekete, a szürke vagy a fehér stílust is. Emellett egy keret gravírozott stílussal is rajzolható, hogy háromdimenziós megjelenést kölcsönözzon neki. A keretstílusok a következők: SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME, SS_ETCHEDHORZ, SS_ETCHEDVERT és SS_ETCHEDFRAME.

A téglalapokat háromféle színnel lehet kitölteni: fekete, szürke vagy fehér. Ezeket a stílusokat a SS_BLACKRECT, SS_GRAYRECT és SS_WHITERECT állandók határozzák meg.

A grafikus stílusok nem kombinálhatók.

Szöveg statikus vezérlője

A szöveges statikus vezérlők öt stílus egyikében jelenítik meg a szöveget egy téglalapban:

  • balra igazított sortörés nélkül
  • balra igazítva a szavak tördelésével
  • központú
  • jobbra igazított
  • egyszerű

Ezeket a stílusokat a SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT és SS_SIMPLE állandók határozzák meg. A rendszer előre definiált módon rendezi át a vezérlők szövegét, kivéve az "egyszerű" szöveget, amely nincs átrendezve.

Az alkalmazások bármikor módosíthatják a szöveg statikus vezérlőinek szövegét a SetWindowText függvénnyel vagy a WM_SETTEXT üzenettel.

A rendszer annyi szöveget jelenít meg, amennyit csak tud a statikus vezérlőben, és bármit rögzít, ami nem fér el. A vezérlőelem megfelelő méretének kiszámításához kérje le a szöveg betűmetrikáit. További információ a betűtípusokról és a betűmetrikákról: Betűtípusok és Szöveg.

A statikus vezérlők ablakszövege alapértelmezés szerint tartalmazhat egy és-jelet, amely a következő karaktert határozza meg gyorsbillentyűként a vezérlő számára (vagy a legtöbb statikus vezérlő esetében az a vezérlőelem számára, amelyet címkéznek, és amely a tabulátor sorrendben a következő vezérlőelem). Ha a szövegben szeretné megjeleníteni az és jeleket ahelyett, hogy billentyűparancsok definiálására használná őket, adja meg a SS_NOPREFIX stílust.

Kép statikus vezérlője

A kép statikus vezérlői bitképeket, ikonokat (beleértve az animált ikonokat) vagy továbbfejlesztett metafájlokat is megjeleníthetnek. Az adott statikus vezérlő által megjelenített ábra típusa a vezérlő stílusától függ: SS_BITMAP, SS_ICON vagy SS_ENHMETAFILE. Az alkalmazások a vezérlő létrehozásakor határozzák meg a stílust, valamint a vezérlőelem megjelenítendő bitképének, ikonjának vagy metafájljának fogópontját is. A vezérlő létrehozása után egy alkalmazás egy másik ábrát társíthat a vezérlőhöz egy STM_SETIMAGE üzenet elküldésével, amely egy leírót ad meg az új grafikus objektumnak. Az alkalmazások egy STM_GETIMAGE üzenet küldésével lekérhetnek egy leírót a statikus vezérlőhöz jelenleg társított grafikus objektumhoz. Az alkalmazás üzeneteket küld egy statikus vezérlőnek a SendDlgItemMessage függvénnyel.

Owner-Drawn statikus vezérlő

A SS_OWNERDRAW stílus használatával az alkalmazások felelősséget vállalhatnak a statikus vezérlők festéséért. A tulajdonos által rajzolt statikus vezérlő (tulajdonosa) szülőablaka WM_DRAWITEM üzenetet kap, amikor a statikus vezérlőt meg kell festeni. Az üzenet egy DRAWITEMSTRUCT szerkezetre mutató mutatót tartalmaz, amely a tulajdonosablak által a vezérlőelem rajzolásakor használt információkat tartalmazza.

Statikus vezérlő alapértelmezett üzenetfeldolgozása

Az előre definiált statikus vezérlőablak-osztály ablakműmenete az összes olyan üzenet alapértelmezett feldolgozását végzi el, amelyet a statikus vezérlő eljárás nem dolgoz fel. Amikor a statikus vezérlő HAMIS ad vissza minden üzenethez, az előre definiált ablakművelet ellenőrzi az üzeneteket, és végrehajtja az alábbi táblázatban leírt alapértelmezett műveletet. A táblázatban a szöveg statikus vezérlője egy statikus vezérlő, amelynek stílusa SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT vagy SS_SIMPLE.

Üzenet Alapértelmezett művelet
WM_CREATE Betölti a grafikus objektumot, és méretezi az ablakot az objektum méretére a grafikus statikus vezérlőkhöz. Más statikus vezérlők esetében nem hajt végre műveletet.
WM_DESTROY A grafikus statikus vezérlők számára felszabadítja és megsemmisíti a grafikus objektumokat. Más statikus vezérlők esetében nem hajt végre műveletet.
WM_ENABLE Újrafesti a látható statikus vezérlőket.
WM_ERASEBKGND Visszaadja IGAZ, amely azt jelzi, hogy a vezérlő törli a hátteret.
WM_GETDLGCODE DLGC_STATIC ad vissza.
WM_GETFONT Egy fogópontot ad vissza a szöveg statikus vezérlőinek betűtípusához.
WM_GETTEXT A másolt karakterek számát adja vissza.
WM_GETTEXTLENGTH Egy statikus vezérlőelem szövegének hosszát adja vissza karakterekben.
WM_LBUTTONDBLCLK Ha a vezérlőstílus SS_NOTIFY, STN_DBLCLK értesítési kódot küld a szülőablaknak.
WM_LBUTTONDOWN Ha a vezérlőstílus SS_NOTIFY, akkor STN_CLICKED értesítési kódot küld a szülőablaknak.
WM_NCLBUTTONDBLCLK Ha a vezérlőstílus SS_NOTIFY, STN_DBLCLK értesítési kódot küld a szülőablaknak.
WM_NCLBUTTONDOWN STN_CLICKED értesítési kódot küld a szülőablaknak, ha a vezérlőstílus SS_NOTIFY be van állítva.
WM_NCHITTEST A HTCLIENT értéket adja vissza, ha a vezérlőstílus SS_NOTIFY; ellenkező esetben a HTTRANSPARENT értéket adja vissza.
WM_PAINT A vezérlőt újrafesti.
WM_SETFONT Beállítja a szöveg statikus vezérlőinek betűtípusát és újrafestéseit.
WM_SETTEXT Beállítja a szöveget, és újrafesti a statikus szövegvezérlőket.

 

Az előre definiált ablak eljárás minden más üzenetet továbbít DefWindowProc alapértelmezett feldolgozáshoz.