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