6 Jegyzettömb és mágia

6 BLOKKOK ÉS KIS KÉPEK

Ha az alkalmazás összetett és számos paramétert tartalmaz, gondosan gondoljon arra, hogy a felhasználó miként konfigurálja őket. Jellemzően egy többszintű rendszer beágyazott menük és egy halom párbeszédablakok, amelyek hívják egymástól javasolt konfiguráció, de ez egyáltalán nem, amit a felhasználó boldog.

Ha megnézzük, úgy néz ki a rendszer beállításait, például a Microsoft Word for Windows 6.0 alkalmazás, akkor láthatjuk, hogy szervezett formában egy notebook, amely több párbeszéd panelek fülek (ábra. 6.1). Úgy látszik, ez a legsikeresebb változatot, hiszen a felhasználó könnyen megtalálja, és válassza ki a kívánt paraméterek csoportja rá.

Ábra. 6.1. Jegyzettömb beállításai a Microsoft Word for Windows 6.0 verziójában

A noteszgép Microsoft Windows 3.1 szoftveres felületen történő alkalmazása nem egyszerű, de a Microsoft Windows 95 operációs rendszernek beépített eszköze van, amely nagyban megkönnyíti az ilyen beállítások létrehozását. Ez az eszköz a Tab és a Property Sheet vezérlők.

A Tab vezérlő néz ki, mint egy könyvjelzőkészlet (a 6.1. Ábra felső része). Ezt fel lehet használni önmagában (forrás laphozctrl megfelelő alkalmazások az SDK), de korlátozzuk magunkat a helyzet, mely a közös - használja részeként Tulajdonságlap igazgató hatóság, amelyet az úgynevezett jegyzettömb.

A Microsoft Windows 95 Tulajdonságtábla vezérlése kicsit más, mint a 2. ábrán látható jegyzettömb. 6.1. Összehasonlításképpen, nézd meg a Fig. Az 1. vagy 2. ábrán az 1.6. 6.2 (lásd alább). A különbség az, hogy a Jegyzettömb vezérlőgombjai (OK, Mégsem, Súgó és Alkalmaz) a Jegyzettömb ablakának alján találhatók.

Hogyan működnek ezek a gombok?

Ha az OK gombra kattint, az új beállítások be vannak állítva, a Jegyzettömb ablak eltűnik a képernyőn. Amint várható, a Mégse gomb megnyomásával visszavonhatja a beállítások módosításait. A Súgó gomb hozzáférést biztosít a súgórendszerhez.

Az Apply (Alkalmazás) gomb segítségével módosíthatja a beállításokat, és megtekintheti, hogy ezek a változtatások hogyan befolyásolják az alkalmazást. Ha erre a gombra kattint, a jegyzettömb ablaka marad a képernyőn, ezért ha a paraméterek új kombinációja nem felel meg Önnek, akkor próbáljon ki egy másikat. Ebben az esetben nem kell kiválasztania a vonalat a képernyőn, amelyik felhívja a jegyzettömböt a képernyőn.

Most a mágiáról.

Természetesen könyvünk nem a boszorkányságról vagy a mágiáról szól, de a felhasználók tetszenek, amikor a programok maguk végzik az összes munkát, vagy legalábbis a munka egy részét (ami nem varázslatos?). Mindazonáltal, függetlenül attól, hogy milyen "okos" a programod, még mindig fel kell kérdeznie a felhasználót, vagy fel kell tenned a különböző alternatívák kiválasztása előtt, amikor félig automata üzemmódban végzi a feladatokat.

És bár a Microsoft Windows 95 nem tartalmaz semmilyen mágikus vezérlést, amely képes megbirkózni minden munkával, még mindig van egy olyan eszköz ebben az operációs rendszerben, amely megkönnyíti a párbeszédet a felhasználóval bizonyos feladatok félig automatikus végrehajtása során. Egy példa a Microsoft Windows 95 operációs rendszer telepítésekor használható párbeszédpanelként. Ez az eszköz a varázslóvezérlés (fordításban azt jelenti, hogy "varázsló", azonban tartózkodunk az ilyen terminológiától).

A varázsló. valamint a notebook, egy sor párbeszédablak panelek (ábra. 1.7, 6.6, 6.7, és 6.8). A különbség az, hogy a notebook a felhasználó hozzáférhet bármely párbeszédablakban nyomja előre a segítségével könyvjelzők, a Wizard ellenőrző szerv, megmozdul az egyik panel a másik, és vissza a Vissza és a Tovább gombokkal. Az utolsó párbeszédablak elérésekor a Következő gomb helyére a Befejezés gombra kattint. Érdemes megnyomni, és. (Ó, csoda!) Mindent megteszünk.

E különbségek ellenére az ellenőrzések tulajdonságlap és varázsló nagyon hasonlóak egymáshoz (nem megjelenésük, hanem létrehozásuk és kezelésük módja). Ezért egy fejezetben megvizsgáljuk őket.

Először nézzük meg a Property Sheet vezérlőt.

Objektívlap-vezérlés létrehozásához a következőket kell tennie:
  • Párbeszédablak sablonok készítése az alkalmazások erőforrásaiban (bár dinamikusan hozhatók létre);
  • előkészíti a párbeszédablakokat minden párbeszédablakhoz (ugyanaz a párbeszédablak is használható ugyanazon vezérlőelemeket tartalmazó több panel számára);
  • létrehozni és kitölteni a PROPSHEETPAGE típusú struktúrákat. amelyek mindegyike a notebook külön oldalát írja le;
  • hozzon létre és töltsön fel egy olyan struktúrát, mint a PROPSHEETHEADER. a notepad leírása;
  • hozzon létre az egyes oldalak a Jegyzettömb segítségével CreatePropertySheetPage funkciót, majd megjeleníti a jegyzet funkcióval PropertySheet (mint látni fogjuk a további, lehetséges tenni anélkül CreatePropertySheetPage funkció, amely leegyszerűsíti a folyamat létrehozása a notebook).

Egyszerre észre fogjuk venni, hogy az ellenőrző szervezet varázslójának létrehozásához ugyanazt az eljárást kell alkalmazni. A különbségek a struktúrák és feldolgozási üzenetek kitöltése a párbeszéd funkcióiban.

Vegye figyelembe a fenti lépéseket részletesebben.

Párbeszédablakok előkészítése

párbeszédablak sablon elő a szokásos módon keresztül az integrált környezet Microsoft Visual C ++ alkalmazások fejlesztése. Az egyetlen dolog, amit szeretnénk felhívni a figyelmet az oldalak egy notebook és a varázsló ellenőrző szervezet OK gombot, Mégse és Súgó, mivel ezek kulcsfontosságúak az egész notebook, és található alján a window. Ellenkező esetben a notebook oldalsablonjai nem különböznek a szokásos párbeszédablakoktól.

Jegyzettömb-oldal párbeszédablak

A szokásos párbeszédpanellel ellentétben a Jegyzettömb oldalának vagy a varázslóvezérlő párbeszédablaka nem hívja meg az EndDialog funkciót. mivel ez az irányító testület megsemmisüléséhez vezetne. Íme egy példa a Jegyzettömb oldalának párbeszédpaneléről, amely a Property Sheet Demo alkalmazásból származik, amelynek teljes forráskódja megtalálható az "Alkalmazás tulajdonságlap bemutatása" részben:

Csakúgy, mint az alkalmazás főablakának funkciójában, a kényelmes HANDLE_MSG makrót használtuk a párbeszédablakban az üzenetfeldolgozás megszervezéséhez.

A PROPSHEETPAGE struktúrák készítése

A Jegyzettömb vagy varázsló minden oldalához elő kell készíteni egy PROPSHEETPAGE struktúrát. miután beírták az oldal leírását. A PROPSHEETPAGE struktúrája a következő:

Talán ez a szerkezet kissé nehézkesnek tűnik, de a betöltés nem okoz nehézséget.

A dwSize mezőben fel kell jegyeznie a struktúra méretét, vagyis a sizeof (PROPSHEETPAGE) értékét.

A dwFlags mezőben olyan zászlókat kell megadni, amelyek jelzik az érintett szerkezeti mezőket és meghatározzák a vezérlés megjelenését. Itt használhatja a következő értékeket:

Alkalmazásunkban a PSP_USETITLE és PSP_USEICONID zászlókat használtuk.

A hInstance mezőnek tartalmaznia kell az alkalmazásazonosítót, amelyet a WinMain függvény megfelelő paraméterein átadnak.

A pszTemplate és pResource mezők kombinálva vannak, így csak az egyiket használhatja. Alapértelmezés szerint egy párbeszédpanel sablont tartalmazó pszTemplate mezőben egy erőforrás azonosítót kell írni. Azonban a PSP_DLGINDIRECT jelző megadásával helyettesítheti a párbeszédablak sablont dinamikusan a RAM-ban, és írhat egy mutatót a sablonhoz a pResource mezőben.

HIcon és pszIcon mezők kombinálva vannak. Ha a pszIcon mezőben szeretné megírni az ikonazonosítót, amely megjelenik a lapon, meg kell adnia a PSP_USEHICON zászlót. Ha az ikon az alkalmazás erőforrásaiban van megadva, akkor írja meg a megfelelő erőforrás azonosítót a pszIcon mezőbe, és adja meg a PSP_USEICONID zászlót.

Abban az esetben, ha nem kell, hogy jelenjen meg az ikon a lapon, nem adja meg a zászlókat és PSP_USEHICON PSP_USEICONID és pszIcon mező (vagy HICON, hogy egy és ugyanaz) levelet NULL.

A párbeszédpanel sablon létrehozásakor megadhatja annak címét. Ahelyett, használhatja a pszTitle mezőt és a PSP_USEICONID zászlót.

Így tölthettük ki a PROPSHEETPAGE struktúra mezőket a Jegyzettömb alkalmazásban három oldalas jegyzettömbre:

A PROPSHEETHEADER felépítése és jegyzetfüzet létrehozása

PROPSHEETHEADER struktúra. amint az a címéből látható, leírja a notebook címét. A következő formátumban van:

A dwSize mezőben fel kell jegyeznie a struktúra méretét.

A dwFlags mező a következő értékek logikai kombinációját tartalmazhatja:

A varázsló létrejön, nem a Notepad tulajdonságlap

A Property Sheet Demo alkalmazásban a PROPSHEETHEADER struktúrát a következőképpen töltöttük:

A jegyzettömb fejlécének kitöltése után hozhat létre jegyzettömböt (vagy a varázslóvezérlést, ha megadta a PSH_WIZARD jelzőt) a PropertySheet funkció használatával.

A CreatePropertySheetPage funkció használata nélkül más módon is létrehozhat jegyzettömböt vagy varázslóvezérlést. Ezt a módszert a Wizard Demo alkalmazásban alkalmaztuk:

Itt nem használjuk az ikont, mert még mindig nem jelenik meg, ezért a pszIcon mező NULL értékre van állítva. Ezenkívül a PSH_PROPSHEETPAGE és a PSH_WIZARD zászlók is megjelennek.

A megfelelő értesítési kódok a megfelelő lapra és a varázsló vezérlésére vannak megadva:

Ez az értesítés átkerül a párbeszéd funkcióra, ha a Jegyzettömb vagy a varázsló megfelelő oldalát aktiválják. Az értesítéskezelő elvégezheti az összes szükséges inicializáló műveletet

Az oldal átkerül a háttérbe, vagy eltávolítja a képernyőt. A bejelentés processzora ellenőrizheti a felhasználó által megadott értékeket, és ha helytelen, blokkolja át a notebook más oldalát

Ezt az értesítést küld, ha a felhasználó rákattint az OK vagy az Alkalmaz gombra

PSN_HELP értesítést küld, ha a felhasználó rákattint a Súgó gombra

PSN_QUERYCANCEL értesítést küld, ha a felhasználó megnyomja a Mégse gombot, azzal a szándékkal, hogy lezárja a számítógépet. A felvezető megtilthatja ezt a műveletet, például, ha a felhasználó nem rendelkezik a szükséges paramétereket

Ez az értesítés után küldött értesítést PSN_QUERYCANCEL, ha az utóbbi nem tiltott felvezető záró pad

Ez küldeni, ha a felhasználó megnyomja a Vissza gombra a varázsló ellenőrző szerv

Ez küldeni, ha a felhasználó rákattint a Tovább gombra a varázsló ellenőrző szerv

Ez küldeni, ha a felhasználó megnyomja a Befejezés gombra a varázsló ellenőrző szerv

Értesítéskezelők lehet visszatérési értéke hamis vagy igaz, de a legtöbb esetben ez is szükséges beállítani befejezése kódot a dialógus adatszerkezet keresztül SetWindowLong funkciót. Így a második paraméter ezt a funkciót kell egy értéket DWL_MSGRESULT.

A következő kód, kivenni a kérelem „Tulajdonságlap Demo”, ellenőrizze a hossza szTempBuf vonalon. Ha ez több, mint 8, a visszatérési érték TRUE, ha kevesebb - HAMIS:

További információ arról, hogyan kell használni ezeket a bejelentéseket megtalálható az SDK Súgó rendszer. A leghasznosabb ezek fogják szakaszokban ismertetett „Property Sheet Demo alkalmazás” és a „Wizard Demo”.

Üzenet rakodók, található a párbeszéd funkciók küldhet Tulajdonságlap és Wizard ellenőrzi különböző jelentések hozzáadásával vagy eltávolításával egyes oldalak megváltoztatásával az állam a gombok, mint például a Next vagy Apply, és így tovább. D.

Az alábbiakban, van egy lista az ilyen üzeneteket egy rövid leírást.

Egy új oldalt a végén a notebook

Ennek hatására az üzenet egyenértékű, hogy az Apply gombra. Ebben az esetben az aktuális oldalt, akkor értesítjük kóddal PSN_KILLACTIVE

Ha ezt az üzenetet, hanem a Mégse gombbal bezárása gombra. Ezt alkalmazzák olyan esetekben, amikor a felhasználó végzett ilyen változásokat, amelyek már nem utasíthatja

Ez az üzenet közlemény az Apply gombra

Segítségével a jelentés tanulhat Tab ellenőrző hatóság azonosítója (könyvünkben nincs leírva), amit használnak, hogy hozzon létre könyvjelzőket könyvjelzők

Segítségével a jelentés lehet szimulálni a hatása egy notebook vagy Wizard ellenőrző szerv vezérlőgombok, mint például OK, Tovább és Befejezés

Egy üzenetet küld a funkciók párbeszédet valamennyi oldal a notebook

Kapcsolódó cikkek