2 - Az eszköztár szervei és az állapotsor

Először nézzük meg azokat a képeket, amelyek az Eszköztár gombjain vannak rajzolva. Ezután megmondjuk, hogyan hozhat létre eszköztár vezérlőablakot.

A gombok képeinek előkészítése

A "Rendszerprogramozói könyvtárak" korábbi kötetekben létrehoztuk az Eszköztárat a Win16 használatával. Ezután minden gombhoz három különböző képet készítettünk - a megnyomott, nyomott és zárt állapotra. Ha sok gomb van, hosszú ideig tart.

Most csak egy képre van szüksége, de rajta minden rajznak rajta kell lennie. Például a legjobb a TOOLBAR.BMP fájlt venni, amelyet automatikusan a Microsoft Visual C ++ AppWizard alkalmazásgenerátor generál (2.1 ábra).

Ábra. 2.1. Az eszköztár általános gombjainak képe. amelyet az AppWizard alkalmazásgenerátor hoz létre

Létrehozhatja képeit úgy, hogy ezt a fájlt alapul veszi, meglévő ikonok módosításával vagy újak hozzáadásával. Ehhez például használhatja a Microsoft Windows 95 operációs rendszert tartalmazó Paint programot. Készíthet egy új bmp fájlt is, amelynek 16 színnek kell lennie. A másik feltétel az, hogy a képen lévő összes ikonnak azonos méretűnek kell lennie.

Mindkét esetben a létrehozott képet hozzá kell adni az alkalmazás erőforrás-fájlához azzal, hogy egy azonosítóval rendelkezik, például:

Ha a Microsoft Visual C ++ rendszert használja, akkor ez az alkalmazásfejlesztési környezet automatikusan elvégzi az összes szükséges módosítást az rc-fájlban, amint megadja a megfelelő erőforrást.

A gombok leírása

Ezután létre kell hoznia egy sor TBBUTTON struktúrát. amely a gombok csoportjainak gombjait és elválasztásait mutatja be. Ebben a tömbben meg kell tartani egy struktúrát minden gombhoz és minden egyes gombcsoport-elválasztóhoz.

A commctrl.h fájlban van egy ilyen definíció a TBBUTTON struktúráról:

Az egyes tömbstruktúrák iBitmap mezőjében le kell írni a gombszámot (a számozás nulláról indul). A határolóhoz ezt a mezőt nulla értékre kell állítani.

Az idCommand mezőben olyan azonosítót kell írni, amelyet a WM_COMMAND üzenet a szülőablakba továbbít, ha a felhasználó rákattint a megfelelő gombra. Ha a TBBUTTON struktúrák eleme a gombok csoportjának szétválasztását írja le, az idCommand mezőben nulla értéket kell írni.

Az fsState mezőnek tartalmaznia kell a gomb kezdeti állapotának zászlóját:

A gombok csoportjai közötti elválasztó

A dwData mezőn át további adatokat adhat meg, amelyeket a gombok leírásában tárol és szükség esetén használ. Ebben a mezőben nulla értéket adhat meg.

Ha nem használják a szöveges karakterláncokat, a nulla értéket írja be az iString mezőbe.

Az alábbiakban bemutatjuk a TBBUTTON struktúrák készítésének egy példáját, amelyben nyolc gomb és három elválasztó látható:

A funkció hívása az Eszköztár ablak létrehozásához

Most, hogy elkészítette a gombkép fájlt, létrehozott egy azonosítót az alkalmazás erőforrás-fájljában, és elkészítette a TBBITMAP struktúrák tömbjét. amely leírja a gombokat, létrehozhat egy eszköztár ablakot. Ennek legegyszerűbb módja a speciálisan létrehozott CreateToolbarEx funkció segítségével:

Amint a dokumentációból látható, ez a funkció létrehoz egy Eszköztár ablakot, és hozzáadja a gombokat a TBBITMAP struktúrákban leírt módon. Ebben az esetben meg kell adnia a gombkép azonosítóját, valamint a fent felsorolt ​​egyéb paramétereket.

Ha sikeres, a CreateToolbarEx függvény visszaküldi a létrehozott Eszköztár vezérlőjének azonosítóját. amely üzenetek küldésére használható. Ha az Eszköztár nem hoz létre semmilyen okból, akkor a funkció NULL értéket ad vissza.

Ennek a funkciónak az első hívása előtt hívja az InitCommonControls funkciót, amelynek nincsenek paraméterei, visszaadja az értéket, és a szabványos vezérlők könyvtárának inicializálására szolgál.

Íme egy példa ennek a funkciónak az alkalmazására az Intelligens alkalmazás alkalmazásban, amelynek forráskódját később adják meg:

Az első paraméterként áthelyezzük a függvényt az alkalmazás főablakának azonosítójára. Ez az ablak értesítést kap az Eszköztár testéről WM_COMMAND és WM_NOTIFY üzenetek formájában.

A ws paraméter az Eszköztár ablak stílusait határozza meg. Mivel ez az ablak mindig az ablakot létrehozó ablak gyermeke, használnia kell a WS_CHILD stílust. Annak érdekében, hogy az Eszköztár ablak legyen látható és látható legyen, a WS_BORDER és a WS_VISIBLE stílust adjuk meg. Ha azt szeretné, hogy a felhasználó módosítsa az Eszköztár megjelenését, akkor a CCS_ADJUSTABLE stílust kell használnia.

Ezenkívül az Eszköztár vezérléshez a következő stílusokat adhatja meg:

TB_GETTOOLTIPS

Az eszköztárhoz társított eszköztippvezérlés azonosítójának azonosítása.

Az üzenet paramétereinek nullanak kell lenniük.

TB_HIDEBUTTON

Ezzel az üzenettel megjelenítheti vagy elrejtheti az azonosító által megadott gombot.

Ha a zászló IGAZ, akkor a gomb rejtett lesz, ha a FALSE - felirat látható.

TB_INDETERMINATE

Ezzel az üzenettel beállíthatja vagy törölheti a gombokat egy nem definiált állapotra, amikor a gomb szürke.

Ha a zóna IGAZ, akkor egy nem definiált állapotot állít be, ha a FALSE törlésre kerül.

TB_INSERTBUTTON

Helyezzen be egy gombot az Eszköztáron.

Ha a gombot sikeresen beillesztette, a SendMessage funkció TRUE, egyébként FALSE.

TB_ISBUTTONCHECKED

Ezzel az üzenettel az alkalmazás ellenõrizheti a gomb állapotát - megnyomta a gombot vagy sem.

Az lParam paraméter értéke nulla.

Ha megnyomja a gombot, a SendMessage funkció TRUE, egyébként FALSE.

TB_ISBUTTONENABLED

Ezzel az üzenettel az alkalmazás ellenőrizheti a gombzár állapotát - a gomb zárolva van.

Az lParam paraméter értéke nulla.

Ha a gomb zárolva van, a SendMessage vissza fog térni a TRUE, ellenkező esetben FALSE.

TB_ISBUTTONHIDDEN

Ezzel az üzenettel az alkalmazás ellenőrizheti, hogy a gomb rejtve van-e vagy sem.

Az lParam paraméter értéke nulla legyen.

Ha a gomb el van rejtve, a SendMessage vissza fog térni a TRUE, ellenkező esetben FALSE.

TB_ISBUTTONINDETERMINATE

Ezzel az üzenettel az alkalmazás ellenőrizheti, hogy a gomb nincs-e definiálva, ha szürkén jelenik meg.

Az lParam paraméter értéke nulla legyen.

Ha a gomb nincs meghatározva, a SendMessage függvény TRUE, egyébként FALSE.

TB_ISBUTTONPRESSED

Ezzel az üzenettel az alkalmazás ellenőrizheti, hogy a gomb le van-e állítva.

Az lParam paraméter értéke nulla.

Ha megnyomja a gombot, a SendMessage vissza fog térni TRUE, ellenkező esetben FALSE.

TB_PRESSBUTTON

Ezzel az üzenettel az alkalmazás beállíthatja a gombot a megnyomott vagy felszabadult állapotra.

Annak érdekében, hogy a gombot lenyomva tartsuk, az fPress jelző értékét TRUE értékre kell beállítani, és a gomb nyomva tartásához egyenlő FALSE.

Ha a gomb állapotát sikeresen megváltoztatta, a SendMessage funkció TRUE, egyébként FALSE.

TB_SAVERESTORE

Ha a TB_SAVERESTORE üzenetet az Eszköztárra küldi, az alkalmazás mentheti vagy visszaállíthatja az Eszköztár állapotát. Az Eszköztár állapotának tárolásához rendszerregisztrációs adatbázis kerül felhasználásra.

Ha a fSave zászló értéke TRUE, az eszköztár állapota mentésre kerül. és FALSE - helyreállítás.

A TBSAVEPARAMS struktúrára mutató mutató áthalad a ptbsp paraméteren. az alábbi:

A Microsoft Windows 95 rendszert regisztráló adatbázis használatával a "Rendszerprogramozói könyvtár" következő kötetek egyikében írhatók le.

TB_SETBITMAPSIZE

A TB_SETBITMAPSIZE üzenet használatával az alkalmazás beállíthatja a gomb felületén megjelenített kép méretét.

A wParam paraméter értéke nulla.

A dxBitmap és a dyBitmap paraméterek segítségével a kép szélességét és magasságát továbbítják.

TB_SETBUTTONSIZE

A TB_SETBUTTONSIZE üzenet használatával az alkalmazás beállíthatja a gomb méretét.

A wParam paraméter értéke nulla.

A paraméterek dxButton és dyButton, illetve a szélessége és magassága a gomb.

TB_SETCMDID

Ezzel az üzenettel rendelheti hozzá a parancs azonosítóját a megadott számhoz tartozó gombbal.

TB_SETPARENT

A TB_SETPARENT üzenet használatával az alkalmazás hozzárendelhet szülőablakot az Eszköztár vezérléséhez.

Az lParam paraméter értéke nulla.

TB_SETROWS

Állítsa be a gombsorok számát az Eszköztárban.

A sorok száma áthalad a cRows paraméteren. A paraméter minimális értéke egy sor, a maximális érték a gombok száma az Eszköztár ablakban.

Ha az fLarger paraméter TRUE, ha nincs elegendő hely a cRow-vonalak összes gombjának helyére, akkor egy további sort hoz létre. Ha az fLarger paraméter FALSE, akkor nincs további vonal.

TB_SETSTATE

Állítsa be a megadott azonosítóval rendelkező gombot egy új állapotba.

A lehetséges gombállapotok listája a fentiekben a TB_GETSTATE üzenet leírásában található.

TB_SETTOOLTIPS

A TB_SETTOOLTIPS üzenet használatával az alkalmazás hozzárendelhet egy eszköztárat az eszköztárhoz.

Az lParam paraméter értéke nulla.

Ne feledje, hogy amikor létrehozza az eszköztárat a TBSTYLE_TOOLTIPS stílussal, az eszköztár szerv automatikusan létrehozásra kerül. így nem kell elküldenie a TB_SETTOOLTIPS kiegészítő üzenetet az Eszköztárhoz. Ha azonban ilyen üzenetet küldesz, csak azokat az gombokat, amelyeket hozzáadtál az Eszköztárhoz, a TB_SETTOOLTIPS üzenet elküldése előtt regisztrálják az Eszköz Tipp-ben.