• Vytvoření grafického uživatelského rozhraní pomocí Win32 API. Vytvoření GUI pomocí Qt

    Odeslat svou dobrou práci do znalostní báze je jednoduché. Použijte níže uvedený formulář

    Dobrá práce na web">

    Studenti, postgraduální studenti, mladí vědci, kteří využívají znalostní základnu ve svém studiu a práci, vám budou velmi vděční.

    Vloženo na http://www.allbest.ru/

    Vloženo na http://www.allbest.ru/

    FEDERÁLNÍ AGENTURA PRO VZDĚLÁVÁNÍ RUSKÉ FEDERACE

    Státní vzdělávací instituce

    vyšší odborné vzdělání

    Ruský státní humanitární pracovník univerzita

    Ústav informačních věd a bezpečnostních technologií

    Katedra obecné informatiky

    TEST

    PRO INFORMAČNÍ TECHNOLOGIE

    GRAFICKÁ ROZHRANÍ A NÁSTROJE PRO JEJICH VÝVOJ

    Lisičenok Konstantin Viktorovič

    Externí studium 3 roky studia

    (4leté studium)

    Skupina B (informační sféra)

    vědecký poradce,

    Kandidát technických věd, přednášející: Mashintsov E.A.

    Moskva 2005

    Plán

    Úvod

    Systém X Window

    Obecné uspořádání systému Okno X

    Programování pomocí knihovny X Toolkit Intrinsic (Xt).

    Xt objekty, jejich klasifikace

    Informační zdroje

    Úvod

    Když pan Strechi v roce 1959 poprvé na konferenci UNESCO o zpracování informací navrhl režim sdílení času pro řešení problémů na počítačích, od tohoto okamžiku je zvykem počítat počátek interaktivního počítání a následně studium rozhraní člověk-stroj. Jak rostl výkon počítačů, rostly i náklady na komponentu konverzačního softwaru. Otázka efektivity strojů byla umocněna rychlým vstupem na trh pracovních stanic, které kombinují interaktivitu s grafikou. Pojem efektivita od té doby změnil svůj význam - pokud dříve odrážel takové vlastnosti, jako je čas procesoru a množství zabrané paměti, nyní je chápán jako snadnost vývoje, snadná údržba a pohodlnost práce s programem. Proto jsou náklady na výzkum a vývoj uživatelského rozhraní oprávněné.

    Vývoj jakéhokoli aplikačního softwaru zpravidla zahrnuje vytvoření uživatelského rozhraní. Protože většina moderních uživatelských rozhraní je založena na podobných myšlenkách ( aktivní používání„myš“, zaměření na objekty, grafiku atd. - napodobování procesů a jevů, možnost použití algoritmů, které zná každý člověk z jeho každodenního života), dále je zde možnost a potřeba vyvinout pomocný software určený k vytvoření tohoto druhu „standardních“ rozhraní, respektive jejich základů .

    Na druhou stranu mnoho různých hardwarových a systémových platforem, na kterých bude tento software muset běžet, vyžaduje jeho přenositelnost na úrovni zdrojového kódu. Výše uvedené požadavky logicky vedou k myšlence přenosné jednotné softwarové sady nástrojů pro tvorbu uživatelských rozhraní nebo, vezmeme-li v úvahu finální aplikační softwarový produkt, systému (modul, blok), který spravuje (spravuje, spouští, udržuje, spravuje) uživatelské rozhraní.

    Takové nástroje (nástroje uživatelského rozhraní) můžete klasifikovat podle schématu:

    * Textové obrazovkové systémy (curse, ncurse, atd.).

    * Systémy grafických obrazovek.

    * Systémy více oken (WMS):

    * orientovaný na znaky (text);

    * grafický;

    *Soubory nástrojů uživatelského rozhraní

    * tradiční;

    * objektově orientovaný;

    * UIDS - User Interface Development System - systém pro vývoj uživatelského rozhraní (toolkit);

    * UIMS - User Interface Management System - systém uživatelského rozhraní (řízení) (softwarový modul - nedílná součást finálního produktu ve spojení s odpovídajícím UIDS);

    * UIDE - User Interface Development Environment - vývojové prostředí uživatelského rozhraní.

    Toto schéma nepředstírá systematickou klasifikaci, spíše je to jen výčet.

    V současné době je věnováno velké úsilí vývoji metod a vytváření nástrojů v rámci systémů nazývaných UIMS - User Interface Management System.

    SystémOkno X

    Okno X nebo jednoduše X- je systém pro tvorbu grafického uživatelského rozhraní, původně - na počítačích se systémem UNIX. X byl vytvořen na MIT (Massachusetts Institute of Technology). Verze 11.6 (X11R6) již byla vydána a probíhají přípravy na vydání verze 7.

    Charakteristickým rysem X Window je jeho architektura – je sestavena podle schématu klient-server. Interakce X-klienta a X-serveru probíhá v rámci odpovídajícího protokolu aplikační vrstva- protokol X. X Window je lhostejný k použitému přenosu, což může být buď lokální UNIX-socket nebo jakákoli síť, jako je TCP. To znamená, že X klient a X server mohou "žít" dál různé počítače, tj. program umí I/O grafické informace na obrazovce jiného počítače a rozdíly v architektuře X klienta a X serveru nehrají žádnou roli – to zajišťuje standard X protokolu. Systém poskytuje grafický výstup na obrazovku stroje, přijímá signály ze vstupních zařízení, jako je klávesnice a myš, a přenáší je do programů. Je třeba poznamenat, že výstupní zařízení může mít více než jednu obrazovku. X poskytuje výstup kterémukoli z nich. To vše: obrazovka (obrazovky), vstupní zařízení (klávesnice, myš) se nazývá X Window - displej.

    X Window je díky své architektuře volně používán v distribuovaných počítačových systémech, například v sítích TCP/IP (internet).

    X umožňuje uživateli (za displejem) komunikovat s mnoha programy současně. Aby se výstup z nich nemíchal, systém vytváří „virtuální podobrazovky“ – okna na obrazovce displeje. Každá aplikace (obvykle) kreslí pouze ve svém okně (nebo svých oknech). X poskytuje sadu nástrojů pro vytváření oken, jejich přesouvání po obrazovce, změnu jejich velikosti, zobrazení a tak dále.

    Programy mají zpravidla sadu konfiguračních parametrů - zdrojů. Může to být barva okna, různé parametry písma textu (ligatura, velikost atd.) a mnoho dalšího. Systém standardizuje způsob definování a správy aplikačních zdrojů a obsahuje řadu postupů pro práci s nimi. Tato sada funkcí se nazývá "resource manager" (Xrm - X resource manager). "Úložiště" nastavení programu se nazývá databáze zdrojů.

    X funguje podle ideologie událostmi řízené architektury – organizuje komunikaci mezi programy samotnými a mezi programy a vnějším prostředím prostřednictvím událostí. Událost je jednotka informací, která identifikuje změny nebo akce probíhající v systému. Podle identifikátoru události o ní můžete získat informace - typ události, její charakteristiky, kde se stala atd.

    Sdílené zařízení X Window

    Systém Okno X je sbírka programů a knihoven. Její "srdce" je speciální program- X server. Jedná se o samostatný proces UNIX, který probíhá na počítači, ke kterému je displej připojen. Je to server, který zná vlastnosti konkrétního hardwaru, ví, co je třeba udělat, aby se na obrazovce zobrazil jakýkoli grafický objekt, například primitiv. Ví také, jak vnímat a zpracovávat signály přicházející z klávesnice a myši.

    Server komunikuje s klientskými programy odesíláním nebo přijímáním datových paketů z nich. Pokud jsou server a klient zapnuté různé stroje, pak se data posílají přes síť, a pokud na jedné, pak se použije interní kanál. Pokud například server zjistí, že uživatel stiskl tlačítko myši, připraví příslušný paket (událost) a odešle jej klientovi, v jehož okně byl kurzor myši v okamžiku stisknutí tlačítka. Naopak, pokud program potřebuje něco zobrazit na obrazovce, vytvoří potřebný datový paket a odešle ho na server. Je zřejmé, že popis této interakce, formáty paketů atd. a tvoří specifikaci výše uvedeného X-protokolu.

    Aby však bylo možné programovat pro X, není nutné znát podrobnosti implementace serveru a protokolu X. Systém poskytuje standardní knihovnu procedur, pomocí kterých programy přistupují k X „vysokým“ službám. K zobrazení bodu na obrazovce tedy stačí zavolat odpovídající standardní proceduru a předat jí požadované parametry. Tento postup provede veškerou práci při vytváření datových paketů a jejich přenosu na server.

    X okno

    Jak již bylo zmíněno dříve, okno je základním konceptem v X. Obvykle představuje obdélníkovou oblast na obrazovce, kterou systém poskytuje klientskému programu. Ten používá okno pro zobrazení grafických informací.

    Okno má vnitřek a okraj. Hlavními atributy okna jsou šířka a výška interiéru a také šířka (tloušťka) hrany. Tyto parametry se nazývají geometrie okna.

    Každé okno je spojeno se souřadnicovým systémem, jehož počátek je v levém horním rohu okna (přesněji jeho vnitřku). Osa x je vpravo a osa y je dole. Měrnou jednotkou pro obě osy je pixel.

    X Window umožňuje programu vytvářet více oken současně. Jsou propojeni v hierarchii, v níž jsou jedni „rodiče“ a druzí „děti“. Server sám vytvoří na každé obrazovce jedno hlavní okno, které je nejvyšším „rodičem“ všech ostatních oken. Toto okno se nazývá "kořenové" okno.

    Správa oken

    Okna lze na obrazovce libovolně rozmístit a vzájemně se překrývat. X Window má sadu nástrojů, které může klientský program použít ke změně velikosti oken a jejich umístění na obrazovce. Charakteristickým rysem systému je, že nemá vestavěnou schopnost spravovat okna pomocí myši nebo klávesnice. K tomu potřebujete speciálního klienta - správce oken (správce oken).

    Správce však nemůže správně spravovat okna, aniž by o nich něco věděl. Okna mohou mít různé vlastnosti, které by měl správce oken poskytovat: například v mnoha případech je vhodné mít názvy oken, v jiných je žádoucí, aby se okno nedalo zmenšit, nebo naopak - větší než určitá velikost. Okno lze „sbalit“ do ikony („ikony“) – v tomto případě musí manažer vědět, kterou ikonu použít a jak ji nazvat. Klienti mohou svá přání týkající se oken sdělit správci dvěma způsoby:

    * při vytváření X okna lze přenášet "doporučení" (nápovědy) o výchozí poloze okna, jeho geometrii, minimální a maximální velikosti atd.;

    * Můžete použít X vestavěný způsob komunikace mezi programy - mechanismus "vlastností".

    Grafické možnosti X Window

    X Window System je navržen pro práci na bitmapových zobrazeních. Počet bitů na pixel se nazývá hloubka nebo tloušťka displeje. Bity se stejnými čísly (stejnými binárními číslicemi) ve všech pixelech tvoří jakoby rovinu, jako by byla rovnoběžná s obrazovkou. Říká se tomu barevná rovina. X vám umožňuje kreslit v jakékoli barevné rovině (rovinách), aniž by to ovlivnilo ostatní.

    Hodnota pixelu nenastavuje přímo barvu bodu na obrazovce, ale nastavuje číslo buňky ve speciálním poli, ve kterém je uložena hodnota barvy, tzn. hodnota pixelu určuje číslo barvy v aktuální paletě.

    X má velkou sadu procedur, které umožňují kreslit grafická primitiva: body, čáry, oblouky, text; pracovat s plochami volného tvaru.

    "Vlastnosti" a atomy

    X Window má vestavěné prostředky pro poskytování informací mezi klientskými programy. K tomu se používá mechanismus "vlastností". "Vlastnost" je informační struktura spojená s nějakým objektem, jako je okno, dostupná všem klientům X. Každá vlastnost má jméno a jedinečný identifikátor - atom. Názvy vlastností jsou obvykle velká. Atomy se používají k přístupu k obsahu vlastností, aby se snížilo množství informací zasílaných mezi klienty a X serverem.

    X poskytuje řadu procedur, které umožňují přeložit název vlastnosti na jedinečný atom, a naopak z atomu získat potřebná data.

    Některé vlastnosti a jejich odpovídající atomy jsou předdefinovány a jsou vytvořeny při inicializaci serveru.

    Programování knihovenX Toolkit Intrinsic (Xt)

    Pro usnadnění programování v systému X window bylo vytvořeno několik balíčků. Současným de facto standardem je knihovna X Toolkit Intrinsics (Xt), která je součástí standardní distribuce systému. Xt usnadňuje inicializaci programů a vytváření oken. Knihovna navíc obsahuje nástroje pro tvorbu objektů (ovládacích prvků), které programy využívají při komunikaci s uživateli. Z hlediska Xt se ovládací prvek nazývá widget.

    V v současné době implementováno na základě balíčku různé sady(sady) ovládacích prvků (objektů), např. Athena, OSF/Motif, Open Look. Tyto sady spolu se samotným Xt slouží jako pohodlný nástroj pro tvorbu rozhraní. Berou na sebe rutinní práci, kterou při psaní vlastní aplikace s použitím pouze základních rutin knihovny X Window by to programátor musel udělat ručně.

    Základy Xt

    programování uživatelského grafického rozhraní

    Xt objekty

    Balíček Xt je základem pro tvorbu ovládacích prvků - widgetů (blanků). Ve smyslu Xt je widget jednoduše datová struktura, jejíž pole obsahují ID samotného prvku, ID jeho okna, pokud existuje, a další. Atributy takového objektu se nazývají zdroje. Zdrojem widgetu může být například barva jeho okna, barva okraje okna, font zobrazeného textu a podobně.

    Každý objekt patří do jedné z předdefinovaných tříd (třída widgetů). Třída je chápána v obvyklém smyslu pro objektově orientované programování, tj.: třídu lze považovat za soubor instancí (objektů), které mají stejné vlastnosti. Třídy Xt tvoří hierarchii.

    Během běhu program vytváří samotné objekty (instance třídy -- widget). Tvoří kolekce, z nichž každá také představuje určitou hierarchii. Každá taková hierarchie se nazývá strom widgetů. Kořenem stromu je nutně widget, který patří do jedné z podtříd speciální třídy - Shell. Pokud mezi dvěma widgety A a B stromu objektů je první blíže kořenu než druhý, pak A je rodič ("rodič") B a B je dílčí objekt (nebo "podřízený" objekt (child)) z A. Objekt shellu je tedy rodičovským widgetem všech ostatních widgetů v tomto stromu objektů. Je to on, kdo provádí interakci programu a správce oken.

    Popsaná hierarchie widgetů odpovídá vztahu jejich oken, což je vlastnost X Window. Kromě toho je na objekty superponována další hierarchie. Faktem je, že během provozu mohou některé objekty ovládat jiné. Pokud má například objekt dílčí objekty, může při změně geometrie automaticky znovu vytvořit geometrie svých potomků. Aby k tomu došlo, je mezi widgetem vytvořeno propojení – odkaz „správa“. Každý objekt může mít jeden nebo více „spravovaných“ dílčích objektů.

    Program využívající Xt má tři mechanismy pro interakci s widgetem a X Window.

    * zpětné volání

    Postupy ("postupy zpětného volání"). Pro každou třídu je definována sada akcí, na které musí objekty do ní patřící reagovat. Například pro každou třídu je poskytnuta reakce na zničení widgetu. Když je provedena akce, zavolá se buď standardní funkce Xt, nebo jedna či více rutin poskytovaných programem. Takové funkce se nazývají procedury zpětného volání nebo jednoduše zpětné volání.

    *Akce

    -postupy. Program může nařídit reakci na tu či onu komplexní událost (skupinu událostí) pocházející z Xt. Pokud dojde k události, Xt vyhledá a zavolá příslušnou funkci.

    * Obsluha událostí

    - obsluha událostí. Tato metoda je podobná předchozí, ale je rychlejší a méně flexibilní. Umožňuje reagovat pouze na jednoduché (jednotlivé) události, nikoli však na jejich sekvence.

    Obecné programovací schéma

    Programy běžící v X musí provádět řadu standardních akcí, jako je navázání spojení se serverem, nastavení nezbytných vlastností pro správce oken a mnoho dalších kroků. Pokud je použito Xt, pak se to vše provádí jednou procedurou - XtInitialize(). Inicializuje samotný balíček, správce zdrojů X Window (\term resource manager) a provede další nezbytné operace. Volání XtInitialize() (nebo XtAppInitialize()) musí předcházet všem ostatním voláním procedur Xt. XtInitialize() vrací identifikátor shell-widget , který lze použít jako kořen stromu objektů programu. Název třídy programu je zpravidla stejný jako název samotného programu, pouze začíná velkým písmenem. Správce zdrojů používá název a třídu programu pro vyhledání jeho parametrů v databázi zdrojů.

    Každý program může zadat některé možnosti na příkazovém řádku. Xt definuje "standardní" parametry, které lze předat při spouštění programu. Kromě toho může příkazový řádek obsahovat nestandardní parametry, které jsou jedinečné pro tuto aplikaci. XtInitialize() skenuje příkazový řádek a umístí odpovídající hodnoty dat do databáze.

    Při inicializaci se také vytvoří kontext programu – struktura, která uchovává veškeré informace o aplikaci. Kontext je určen k ochraně programu před vlivem různých úprav v operačním systému. XtInitialize() vytváří nějaký standardní kontext (výchozí kontext), ale přesto se od čtvrté verze X doporučuje vytvořit samostatný „osobní“ kontext pro každou jednotlivou instanci programu, pro kterou z hlediska Xt , měli byste použít volání procedury XtAppInitialize() (místo XtInitialize()). Všimněte si, že aplikace v Xt může mít ne jeden, jako obvykle, ale několik objektů " nejvyšší úroveň".

    Další fází po inicializaci je fáze vytvoření ovládacích prvků programu, popisu vztahu mezi nimi, nastavení reakcí na různé události (registrace obsluhy událostí a dalších podobných objektů). To se dá udělat různé způsoby, tradiční je použití například k vytvoření objektu procedury XtCreateWidget(), k přenesení řízení objektu na jeho rodiče – procedura XtManageChild(), k registraci obslužných rutin pro widget – procedura XtAddEventHandler(), atd. a tak dále.

    Poté, co jsou všechny objekty programu připraveny k práci, jejich grafické znázornění (například okna odpovídající těmto widgetům) se zobrazí na obrazovce pomocí procedury XtRealizeWidget().

    Další fází je hlavní cyklus – cyklus přijímání a odesílání událostí. Je implementován voláním procedury XtMainLoop() (XtAppMainLoop()).

    Program používající pouze rutiny základní knihovny X (Xlib) musí sám zvážit každou příchozí událost (získá ji z fronty událostí explicitním voláním, například XNextEvent() nebo XPeekEvent()) a podle toho reagovat. Pokud má úloha několik oken, je před provedením jakékoli akce nutné určit, ve kterém z oken k události došlo a na jaké úrovni hierarchie bude tato událost zpracována (zpracuje tuto událost tento objekt nebo jeho nadřazený objekt? ). To vše je docela zdlouhavé.

    Xt se postará o veškerou rutinní práci. XtMainLoop() přijme další událost a určí okno, pro které je určena. Odpovídající widget se nachází v okně. V druhém případě je definována obsluha události, akční procedura nebo zpětné volání, které mají být zaregistrovány, aby reagovaly na událost, která nastala. Pokud existuje nějaká síť, jsou voláni. Mechanismus popsaný výše se nazývá odeslání události.

    XtMainLoop() (XtAppMainLoop()) automaticky ukončí program na žádost správce oken.

    Objekty Xt, jejich klasifikace

    Xt poskytuje sadu zařízení pro vytváření objektů, které programy používají ke komunikaci s uživatelem a obecně se zbytkem vnějšího světa.

    Každý vytvořený programem widget je zástupcem jedné nebo druhé třídy. Xt a balíčky na něm založené, jako OSF/Motif, Athena, Tk/tcl, Open Look atd. velký počet takové třídy. Vytváření nových widgetů, které nejsou poskytovány ve standardních knihovnách, také vyžaduje vytvoření (definici) odpovídající třídy, což je obvykle časově náročný úkol.

    Každá třída má řadu pevných charakteristik, které jsou společné všem jejím instancím (například seznam procedur zpětného volání). Hodnoty těchto charakteristik pro samotné objekty se mohou lišit.

    Všechny třídy Xt tvoří hierarchii. Pokud je třída B blíže vrcholu hierarchie než třída D, pak se B nazývá základní třída D a D se nazývá odvozená třída (nebo podtřída) B.

    Podtřídy dědí vlastnosti všech svých základních tříd. To znamená, že instance třídy má vlastnosti nejen své vlastní třídy, ale také atributy všech základních tříd.

    V programech je každá třída identifikována proměnnou, která ukazuje na odpovídající datovou strukturu. Tato proměnná se nazývá ukazatel třídy. Data této struktury se vyplní při inicializaci Xt.

    Hlavní třídy widgetů:

    objekt. Abstraktní třída (třída, která nevytváří svůj vlastní objekt), která se používá jako kořen stromu všech objektů. Obsahuje jednu podtřídu:

    RectObj. Abstraktní třída, která se používá k definování některých obecných charakteristik nezbytných pro fungování různých typů objektů (například pro objekty, které nemají okno). Obsahuje podtřídu:

    jádro. Kořen stromu tříd widgetů, které mají okna. Tato třída definuje vlastnosti, které jsou společné všem objektům, jako je velikost okna widgetu a jeho pozice na obrazovce. Obsahuje podtřídu:

    Kompozitní. Widgety patřící do této třídy mohou být rodiči jiných objektů. Instance třídy Composite definují pro své podobjekty následující chování:

    * nastavuje umístění widgetu "dítě" podle určitých omezení;

    * při zničení uvolní paměť používanou podobjekty (při zničení widgetu třídy Composite budou nejprve zničeny všechny jeho "děti");

    * řídí vzhled oken svých dětských widgetů na obrazovce;

    * řídí přenos vstupního zaměření mezi objekty.

    Třída Composite obsahuje podtřídy:

    Omezení. Tato třída je dalším rozšířením základní třídy. Jeho instance mají další schopnost ovládat velikost a umístění svých dětí. Dílčí objekty mohou být například umístěny ve zvláštním pořadí: v řádku, ve sloupci a tak dále.

    Shell. Toto je speciální třída navržená pro interakci se správcem oken. widget z této třídy může mít pouze jednoho potomka. Třída Shell obsahuje podtřídy:

    OverrideShell. Toto je důležitá podtřída třídy Shell. Pro okno widgetu této třídy je atribut override_redirect nastaven na True, tj. správce oken nad tím nemá kontrolu. Okna objektů této třídy zpravidla nemají doplňky přidané správcem oken (nadpis, rámeček, standardní tlačítka) a slouží především k vytváření nabídek různého typu.

    WMShell. Toto je speciální podtřída třídy Shell, která obsahuje další pole potřebná pro interakci se správcem oken. Obsahuje:

    VendorShell. Tato třída je určena k umožnění interakce se speciálními správci oken. Tato třída obsahuje podtřídy:

    TopLevelShell. Widgety této třídy se obvykle používají jako objekty shellu stromu objektů programu. Ten obsahuje:

    ApplicationShell. Program může mít zpravidla pouze jednu instanci, která patří do třídy ApplicationShell.

    TransientShell. Tato třída se od předchozí liší pouze způsobem interakce se správcem oken. Widgety této třídy nelze minimalizovat (přeměnit na ikonu). Pokud se však rodič objektu třídy TransientShell změní na ikonu, okno widgetu se z obrazovky odstraní. Třída TransientShell se používá k vytváření dialogů.

    Každá z tříd widgetů, a tedy i objekty vytvořené na jejím základě, mají poměrně velké množství parametrů. Z hlediska Xt se nazývají „zdroje“. Xt poskytuje širokou škálu nástrojů pro práci s nimi.

    Další vlastnosti Xt

    Xt poskytuje mechanismus pro práci se soubory (a externími zařízeními obecně) v asynchronním režimu. Aplikace může zaregistrovat proceduru, která se má zavolat, když jsou data připravena nebo když dojde k chybě čtení/zápisu.

    Xt dává aplikaci možnost provádět určité akce v určených intervalech. Například periodicky zobrazovat aktuální čas na obrazovce v daném okně atd. Pro takové účely se používá speciální mechanismus Xt - časovač. Poskytuje volání po zadaném časovém intervalu speciální funkce určené programem.

    Xt poskytuje možnost provést nějakou akci, když je fronta událostí prázdná. To se provádí registrací speciální "pracovní" procedury, kterou Xt zavolá, pokud je fronta událostí prázdná. Tyto funkce se obvykle používají k provádění různých akcí a výpočtů ve velmi krátkém čase.

    Každá aplikace v případě potřeby může upravit obvyklý cyklus příjmu a odesílání (zpracování) událostí – Xt poskytuje celou sadu procedur pro práci s frontou událostí.

    Xt má mechanismus tzv. akcelerátorů (akcelerátor), který umožňuje zadávat závislosti událostí a akcí. Akcelerátory jsou podobné akčním procedurám s tím rozdílem, že událost (nebo skupina událostí) vyskytující se v jednom widgetu iniciuje volání odpovídající akční procedury na jiném objektu.

    Xt podporuje několik způsobů práce s okny widgetů. Program tedy může pomocí rutin poskytovaných Xt zobrazit okno, nastavit pro něj ten či onen provozní režim a zavřít okno, když to nebude nutné. Tyto postupy se používají hlavně k vytváření vyskakovacích nabídek a dialogů. Všechny sady widgetů (např. OSF/Motif) mají zpravidla své vlastní mnohem pohodlnější postupy pro vytváření nabídek a dialogů.

    Doplňky k Xt V současné době je Xt přísně standardizováno konsorciem X, ale neexistují žádné vyšší standardy. Populární jsou:

    *OSF/Motif Toolkit;

    * Sada widgetů Athena;

    * OPEN LOOK Intrinsic Toolkit;

    * Rozhovory;

    *Tk/tcl.

    Za nejběžnější a téměř de facto standard je třeba považovat OSF/Motif.

    Athéna

    Athena Widget Set ("sada widgetů") poskytuje konsorcium X jako součást standardní distribuce X. Athena byla vytvořena z práce na základních aplikacích a utilitách během projektu Athena na MIT, jehož výsledkem je X Window System.

    Athena měla původně „plochou“ grafiku – všechna tlačítka, nabídky a další prvky rozhraní neměly žádné stíny, tzn. byly ploché. Zhruba před rokem byl vydán AW3d, varianta Athena Widgets, která tento nedostatek napravila.

    Motiv

    Open Software Foundation Motif (OSF/Motif) je balíček, který obsahuje správce oken, sadu utilit pro provádění různých pomocných operací a knihovnu objektů postavenou na Toolkit Intrinsics.

    Motiv podporuje všechny třídy Xt a tedy zdroje těchto tříd, ale název a třída zdroje objektu jsou reprezentovány konstantami s předponou XmN a XmC, v tomto pořadí. Pro záznam typu zdroje se používají konstanty s předponou XmR (místo XtR, převzaté v Xt).

    Motiv rozšiřuje sadu tříd objektů poskytovaných Xt. Zejména Motif podporuje poměrně velkou sadu tříd, které umožňují vytvářet nabídky, posuvníky, klikací tlačítka, upravovat prvky a tak dále.

    Kromě toho Motif poskytuje speciální třídu objektů zvanou gadget – tvoří samostatnou třídu XmGadget v Motifu, což je podtřída třídy RectObj. Mohou být také použity k vytváření prvků rozhraní, ale mají tu zvláštnost, že nemají vlastní okna. Ke kreslení využívají miniaplikace okno svého rodiče.

    Každá třída widgetů má poměrně široký výběr jak zděděných, tak dodatečných zdrojů, které jsou pro ni specifické. Umožňují vám ovládat tak důležité vlastnosti objektů, jako je barva pozadí, umístění na obrazovce, písmo zobrazeného textu a tak dále.

    Některé z tříd Motif se nepoužívají k vytváření instancí widgetů (takové třídy se v terminologii objektově orientovaného programování nazývají abstraktní třídy). Obsahují nejběžnější atributy a metody potřebné pro fungování různých typů widgetů.

    Motif má dvě hlavní podtřídy objektů: XmPrimitive a XmManager (třída XmGadget byla zmíněna dříve). Obě tyto třídy jsou abstraktní. První z nich je zděděna z třídy Core a používá se jako základ pro třídy objektů, které nevlastní jiné objekty. Příkladem jsou klikatelná tlačítka, seznamy a tak dále. Třída XmManager je odvozena od třídy Constraint a používá se k vytváření objektů, které mohou mít podřízené objekty a spravovat je.

    Klasifikace objektů

    Třída XmGadget. Při vytváření instance běžných tříd objektů Motif (widget) se také vygeneruje odpovídající okno. Pokud program používá hodně widgetů, vede to k výraznému zpomalení aplikace. Čas je věnován jak tvorbě oken, tak další práci s nimi. Je ale snadné vidět, že není nutné mít pro každý objekt samostatné okno. Štítky, tlačítka a mnoho dalších widgetů by mohly úspěšně používat své rodičovské objekty k kreslení oken. Neexistuje žádné okno - není třeba znovu kontaktovat server, zvyšuje se výkon a nedochází k plýtvání další pamětí.

    Vývojáři Motifu uvedli tuto myšlenku do praxe a zduplikovali některé třídy objektů a vytvořili dvě verze – s oknem a bez okna. Verze objektů, které nemají okna, vedou svou hierarchii z abstraktní třídy - XmGadget a mají stejný obecný název. Tato speciální třída objektů zdědí své vlastnosti od třídy RectObj, což je zase abstraktní třída, která zapouzdřuje základní mechanismy pro správu geometrie objektů.

    Kromě toho, že gadgety nemají vlastní okna, jsou na ně kladena další omezení. Takže pro ně není možné definovat handlery událostí (event handler), překladové tabulky. Modul gadget také nemůže mít podřízené objekty. Jinak je funkčnost gadgetu a odpovídajícího widgetu stejná, proto je nebudeme samostatně popisovat, pouze uvedeme.

    Třída XmGadget obsahuje podtřídy:

    *XmArrowButtonGadget.

    * XmLabelGadget.\hfil

    *XmPushButtonGadget.

    *XmToggleButtonGadget.

    *XmCascadeButtonGadget.

    *XmSeparatorGadget.

    Třída XmPrimitive. Tato abstraktní třída obsahuje:

    XmArrowButton. Instance třídy je tlačítko, na kterém je nakreslena směrová šipka. Na tlačítko lze kliknout myší nebo klávesnicí. Hranice ovládacího prvku může mít stín, používá se k zobrazení různých stavů, ve kterých může být objekt: volný („stisknutý“) a stlačený.

    Značka Xm. Zástupci této třídy (štítky) jsou jedním z nejjednodušších objektů Motif. Štítky jsou navrženy tak, aby zobrazovaly informace: text nebo obrázky (bitové (pixelové) mapy).

    XmPushButton. Členy této třídy jsou obdélníková tlačítka, na která lze kliknout a do kterých lze nakreslit řádek textu.

    Pokud je objekt vybrán například stisknutím levého tlačítka myši, když je kurzor na objektu, změní se barva okraje widgetu, což vytváří efekt kliknutí. Po uvolnění tlačítka se barva ohraničení obnoví. Na takový widget můžete také kliknout z klávesnice - k tomu musíte přenést vstupní fokus na objekt a stisknout klávesu "mezera" (obvykle).

    Tlačítko XmDrawn. Objekty této třídy jsou podobné klikacím tlačítkům, jen s tím rozdílem, že nekreslí text, ale libovolný obrázek (pixelovou mapu).

    XmToggleButton. Objekty této třídy představují malé tlačítko, vedle kterého je zpravidla vysvětlující text. Tlačítko může být ve dvou stavech: zapnuto a vypnuto (tj. jde o spínač). Jsou poznamenány změnou vzhledu ovládacího prvku.

    Zástupce této třídy slouží k vytvoření tzv. "check buttons" (kontrolní tlačítko), které by bylo rozumnější nazývat "checkmarks", a "radio buttons" (radio button) - vícepolohové přepínače. První slouží k nastavení logických parametrů, tzn. mající dva významy. Posledně jmenované slouží podobnému účelu, ale soubor významů v tento případ je konečný a obsahuje více než dva prvky. Podoba grafického znázornění objektu typu XmToggleButton v tomto případě závisí na tom, zda je použit jako „tick“ nebo „radio“ tlačítko.

    Widgety třídy XmToggleButton jsou obvykle kombinovány do konstrukcí nazývaných zaškrtávací políčko a přepínač. Tyto bloky zase představují úpravy objektů třídy XmRowColumn popsané níže.

    XmCascadeButton. Objekty této třídy představují tlačítka, na která lze kliknout, a používají se při vytváření nabídek. Když kliknete na objekt, objeví se podnabídka další úrovně.

    xmllist. Zástupci této třídy jsou jedny z nejzajímavějších objektů Motif. Jsou navrženy tak, aby zobrazily seznam řetězců a poskytly uživateli možnost provádět různé akce s prvky seznamu. Uživatel může vybrat jeden nebo více řádků přítomných v tomto objektu a ty jsou zvýrazněny. Pokud má seznam navíc vstupní fokus, pak je jeden z jeho prvků zvýrazněn tečkovaným rámečkem. Tento rámec se nazývá kurzor seznamu.

    XmScrollBar. Objekty této třídy - posuvníky (scroll bars) se zpravidla používají ve spojení s jinými objekty, jako je seznam (XmList), text (XmText) a další. Posouvací lišta je určena k posouvání oblasti, pokud informace v ní uvedené (seznam, text, obrázek atd.) nelze v okně zobrazit celé. Objekty třídy XmScrollBar představují pruh (horizontální nebo vertikální) s tlačítky se šipkami na okrajích. Kliknutím na kterýkoli z nich se posouvá ve směru označeném šipkou. Na samotném pruhu posuvníku je posuvník (jezdec) - barevně zvýrazněný obdélník. Pokud jej „zaháknete“ myší a „přetáhnete“, pak to zpravidla také vede k posouvání oblasti.

    XmSeparator. Objekty této třídy - oddělovače - se zpravidla používají ke zlepšení vzhledu oken aplikací. Takový widget je svislý nebo vodorovný pruh (čára) oddělující skupiny objektů. Oddělovače lze například použít v nabídkách k oddělení jednoho příkazu od druhého, v dialogových oknech k oddělení skupiny klikatelných tlačítek od ostatních prvků a tak dále.

    xmtext. Objekty této třídy umožňují zobrazit jeden nebo více řádků textu. Pokud se čáry nevejdou do okna, lze obrázek posouvat doleva-doprava a nahoru-dolů. Text lze upravovat - režim úprav lze změnit nastavením vhodných prostředků objektu.

    Motif poskytuje řadu pohodlných procedur, které vám umožňují provádět širokou škálu operací s widgetem této třídy: získat a upravit data, zkopírovat vybranou část dat do systémové schránky (schránky) a tak dále.

    XmTextField. Objekty této třídy umožňují prohlížet a upravovat jeden řádek textu.

    třída XmManager. Tato třída je abstraktní, tzn. nepoužívá se ke spawnování objektů. Definuje základní parametry potřebné k sestavení tříd widgetů, které mohou manipulovat s jinými objekty. Tyto prostředky jsou potřebné ke správnému vykreslení podřízených widgetů a řízení toho, jak získají vstupní fokus.

    Třída XmManager obsahuje:

    XmBulletinBoard. Objekty této třídy mohou mít podobjekty, které jsou umístěny v okně libovolným způsobem. Souřadnice okna podřízených widgetů se měří v souřadnicovém systému, jehož počátek je v levém horním rohu okna objektu třídy XmBulletinBoard.

    Při změně velikosti objektu např. pomocí myši se počáteční umístění dílčích objektů buď nezmění, nebo se posunou tak, aby nedocházelo k vzájemnému křížení. Pokud se okno widgetu zmenší, části dílčích objektů se mohou stát neviditelnými.

    Třída XmBulletinBoard obsahuje:

    Xform. Charakteristickým rysem objektů této třídy (formulářů) je schopnost řídit umístění jejich podobjektů nastavením vazeb jak mezi formulářem samotným a podřízeným widgetem, tak mezi podobjekty samotnými.

    U každého podřízeného widgetu můžete určit, k čemu je ukotven jeho levý, pravý, spodní nebo horní okraj. Pokud jsou tedy levý a pravý okraj podobjektu svázány s pravým okrajem formuláře, pak vzdálenost od nich k tomuto okraji zůstane vždy stejná. Pokud se velikost formuláře zmenší, pak se dílčí objekt posune doleva a pokud se velikost zvětší, přesune se doprava. Můžete propojit jeden dílčí objekt s druhým. Poté změnou polohy podobjektu, ke kterému je widget připojen, přesune připojený objekt tak, aby byla zachována vzdálenost mezi nimi.

    Při změně velikosti formuláře jsou zachovány všechny vztahy mezi jeho podobjekty.

    XmSelectionBox. Objekty této třídy ("pole výběru") představují příklad složeného widgetu a zahrnují rolovací seznam, kde může uživatel vybrat požadovanou položku, a také textové pole (objekt XmTextField), kde je položka vybraná v seznamu. zobrazeno. Provedený výběr může uživatel upravit. Seznam a textové pole mohou mít vysvětlující popisky nastavené pomocí odpovídajících widgetů třídy XmLabel. Objekt třídy XmSelectionBox také obsahuje tři tlačítka (objekty XmPushButton). Ve výchozím nastavení jsou označeny „OK“, „Zrušit“ a „Nápověda“. A nakonec je tu ještě jeden prvek – klikací tlačítko, které má ve výchozím nastavení název „Použít“. Tento dílčí objekt je původně vytvořen, ale není zahrnut v seznamu spravovaných modulů widget.

    Pomocí bloku výběru může uživatel specifikovat podřetězec, který potřebuje v seznamu, nebo jej zadat do textového pole. Nastavení se potvrdí stisknutím tlačítka "Ok".

    Třída XmSelectionBox zahrnuje:

    XmCommand. Objekty této třídy umožňují uživateli vybrat požadovaný příkaz pomocí seznamu již zadaných příkazů nebo zadáním příkazu do textového pole určeného speciálně pro tento ve widgetu.

    XmFileSelection. Objekty této třídy vám umožňují zobrazit aktuální obsah různých adresářů a vybrat konkrétní soubor.

    Objekty této třídy obsahují prvky:

    * 2 textová pole: "Filtr" a "Výběr" (objekty třídy XmNextField);

    * 2 seznamy: "Adresáře" a "Soubory" (objekty třídy XmList);

    * 4 tlačítka: „Ok“, „Filtr“, „Zrušit“ a „Nápověda“ (objekty třídy XmPushButton);

    Textové pole "Filtr" nastavuje masku (šablonu) pro výběr určité podmnožiny z celé sady souborů, které splňují podmínku uvedenou v tomto poli - odpovídající šabloně - je to tato podmnožina, která je zobrazena v seznamu "Soubory". Seznam "Adresáře" zobrazuje podadresáře aktuálního adresáře. V textovém poli "Výběr" se zobrazí soubor (jeho název) vybraný v seznamu "Soubory" a do stejného textového pole může uživatel ručně zadat celý název souboru, který potřebuje. Čtyři tlačítka se používají k provádění různých akcí:

    Ok - vyberte daný soubor;

    Filtr - aktualizace seznamu souborů zobrazených v textovém poli "Soubory" podle aktuální masky;

    Storno - zavře okno widgetu, nedojde k výběru souboru;

    Pomoc - volání o pomoc.

    XmMessageBox. Objekty této třídy jsou určeny k odesílání zpráv uživateli, ke kterým dochází během provozu programu. Tento widget je složený. Má oblast, ve které je zobrazen řádek textu (zprávy) a speciální ikonu, která charakterizuje typ zprávy. Objekt má navíc tři stlačitelná tlačítka. Ve výchozím nastavení jsou označeny: „OK“, „Zrušit“ a „Nápověda“.

    XmDrawingArea. Objekty této třídy poskytují programu okno pro kreslení a zobrazování informací. Samotná třída neposkytuje parametry, které by bylo možné přímo použít k zobrazení grafiky. Ale seznamy procedur zpětného volání dostupné v této třídě vám umožňují přijímat oznámení o nutnosti překreslit okno widgetu a o přijetí vstupního fokusu.

    XmFrame. Objekty této třídy se používají k odlišení některých objektů od jiných jejich zakroužkováním rámečkem. Zvláštností widgetu této třídy je, že mohou mít a spravovat pouze jeden podobjekt.

    XmPanedWindow. Objekty této třídy mohou kombinovat různé widgety. Dílčí objekty jsou od sebe odděleny a mezi ně je umístěn speciální prvek, který se nazývá křídlo. Vypadá jako malý čtverec a používá se ke změně velikosti podřízených widgetů. Pokud má tedy objekt třídy XmPanedWindow dva podobjekty, můžete provést následující: „zaháknout“ křídlo pomocí myši a „přetáhnout“ jej správným směrem (dolů-nahoru nebo vlevo-vpravo) - zatímco podélná velikost (velikost ve směru, ve kterém byl "vytažen" křídlo) jednoho podřízeného objektu se zvětší "na úkor" druhého (velikost druhého se zmenší), příčné rozměry obou dílčích objektů zůstanou zachovány . "Příčná" velikost objektu třídy XmPanedWindow je určena maximální podobnou velikostí jeho podobjektů.

    XmRowColumn. Objekty této třídy mohou kombinovat různé widgety. Dílčí objekty jsou uspořádány v určitém pořadí – ve formě matice. widget třídy XmRowColumn jsou základem pro vytváření následujících objektů:

    zaškrtávací políčko - "blok zaškrtávacích tlačítek" (tj. objektů třídy XmToggleButton nebo XmToggleButtonGadget); mezi tlačítky dostupnými v "bloku" lze vybrat několik ("zapnout") současně;

    radiobox – „blok přepínacích tlačítek“ (tj. objekty XmToggleButton nebo XmToggleButtonGadget); mezi tlačítky dostupnými v "bloku" lze vybrat ("povolit") pouze jedno současně;

    roletová nabídka - "rozbalovací nabídka" - okno podnabídky, které se zobrazí po výběru tlačítka v nabídce nejvyšší úrovně (panel nabídek); položky nabídky jsou uspořádány svisle;

    nabídka možností - tlačítko s přidruženou nabídkou; po stisku tlačítka se objeví okno nabídky, ze kterého se vybere jedna hodnota parametru; položky nabídky jsou uspořádány svisle;

    popup menu - "vyskakovací menu", které se zpravidla vyvolá stisknutím třetího tlačítka myši; okno nabídky se objeví v místě, kde je umístěn jeho kurzor; položky nabídky jsou uspořádány svisle;

    lišta nabídek - nabídka nejvyšší úrovně obsahující řadu tlačítek (objekty třídy XmCascadeButton nebo XmCascadeButtonGadget), která se používají k vyvolání různých podnabídek (rozbalovací nabídka); položky nabídky jsou uspořádány vodorovně.

    XmScale. Objekt této třídy je obdélníková oblast obsahující fixační posuvník (slider), pomocí kterého může uživatel vybrat hodnotu parametru spojeného s objektem ze zadaného rozsahu.

    XmScrolledWindow. Objekt této třídy poskytuje možnost zobrazit a zobrazit některé informace (text, obrázek, seznam). Takový widget zpravidla obsahuje podobjekt, ve kterém se nacházejí data určená k prohlížení (může to být objekt třídy XmText, XmDrawingArea atd.) Více pohodlné prohlížení data lze použít horizontálně a svislé pruhy svitek.

    Tato třída obsahuje podtřídu

    XmMainWindow. Objekty této třídy představují samostatnou komponentu rozhraní, která se obvykle skládá z následujících částí:

    * menu nejvyšší úrovně,

    * příkazové okno,

    * "Pracovní prostor,

    * schránka zpráv,

    * a dva posuvníky (horizontální a vertikální).

    Dílčí objekty mohou být odděleny oddělovači.

    Třídy XmMenuShell a XmDialogShell. Motif poskytuje třídu objektů XmMenuShell pro vytváření různých nabídek. Tato třída dědí z třídy OverrideShell (z Xt).

    Jak již bylo zmíněno při popisu Xt, třída TransientShell slouží k vytváření programových objektů, které na jedné straně přímo kontaktují správce oken a na druhé straně mají vlastnosti, které je odlišují od běžných oken nejvyšší úrovně. Hlavní z těchto funkcí je, že widget třídy TransientShell nelze minimalizovat. Pokud se však rodič změní v ikonu, jsou z obrazovky odstraněny. Tento druh widgetu se obvykle používá k vytváření pomocných oken programu.

    Motif přebírá zadané vlastnosti třídy TransientShell a rozšiřuje je do odvozené třídy XmDialogShell. Ten slouží jako objekt shellu dialogu.

    Struktura dialogového okna v Motivu může být reprezentována následovně:

    Objekt třídy XmDialogShell

    Objekt podtřídy XmManager, například XmBulletinBoard nebo XmForm

    Různé ovládací prvky: tlačítka, pole pro zadávání textu atd.

    Knihovna má sadu postupů, které usnadňují tvorbu popsané konstrukce.

    Dialogy

    Jak již bylo zmíněno, konstrukce dialogového okna v Motifu je následující: nejprve je zde objekt třídy XmDialogShell, který pak zahrnuje widget jedné z podtříd třídy XmManager, tento objekt slouží k hostování různých objektů.

    Knihovna poskytuje speciální postupy pro vytváření dialogů. Liší se typem widgetu, který je potomkem objektu třídy XmDialogShell.

    Textový výstup

    Knihovna má poměrně velké množství widgetů, které slouží k zobrazení textových informací. Jsou to XmLabel s podtřídami, XmText atd. Prostředek XmNfontlist se používá k určení možných písem, která lze použít při kreslení čar. Je typu XmFontlist. Jeho hodnota je sada párů "font"/"font tag".

    Tagy (štítky) jsou navrženy tak, aby programy byly nezávislé na konkrétních fontech určených uživatelem. To se provádí následovně: aplikace je vytvořena tak, že ve všech funkcích, které pracují s řádky textu, nejsou samotná písma, ale jejich popisky. Když je úloha zkompilována a spuštěna, určí se korespondence mezi značkami a konkrétními fonty. Ty druhé se používají ke kreslení.

    Motiv disponuje nástroji nejen pro práci s řádky textu zobrazenými jedním písmem, ale umožňuje pracovat i s objekty jako jsou „složené řádky“ – tzn. řádky textu, které používají mnoho písem. Existuje sada nástrojů pro vytváření takových řetězců, práci s nimi a jejich převod na normální, "jednofontové" řetězce.

    Práce s obrázky

    Motiv sám pracuje s obrázky, zastupuje je v interním formátu, což je nejjednodušší bitmapa (bitmapa), která je specifikována pomocí struktury XImage.

    Ovládání vstupního zaostření

    Motiv podporuje dva modely pro předávání vstupního zaostření. První je implicitní (ukazatel): fokus je věnován widgetu, kde se pohybuje kurzor myši. Druhý model je explicitní: pro přenesení fokusu umístěte kurzor myši do okna widgetu a stiskněte levé tlačítko myši. Když widget nebo gadget obdrží vstupní fokus, zvýrazní se jeho ohraničení.

    Kromě těchto modelů předávání a přijímání vstupního zaměření existuje také mechanismus pro předávání vstupního zaměření z jednoho widgetu do druhého. Objekty lze kombinovat do skupin - lze to provést nastavením potřebných hodnot odpovídajících zdrojů nebo je lze předat systému. V druhém případě Motif automaticky sváže widget pomocí vestavěných pravidel. Takže například objekt třídy XmMessageBox obsahuje tři skupiny: jedna je "hlavní" objekt dialogu (třída XmForm), druhá je "label", ve kterém je zpráva prezentována uživateli, třetí jsou tlačítka být přitlačen.

    Vstupní fokus se přenáší jak z jednoho objektu (ve skupině) na druhý, tak ze skupiny do skupiny.

    Přenos fokusu v rámci skupiny se provádí pomocí kláves se šipkami a ze skupiny do skupiny pomocí klávesy tabulátor (proto se samotné skupiny nazývají skupiny karet). Když se fokus přenese na skupinu, vstupní fokus v ní se přenese na první objekt, který může fokus obdržet (objektu lze zabránit v tom, aby fokus dostal, nastavením příslušné hodnoty odpovídajícího zdroje). Pořadí, ve kterém je vstupní fokus předán v rámci skupiny, je stejné jako pořadí, ve kterém jsou vytvořeny její widgety. V tomto případě obvykle kombinace kláves přesune fokus opačným směrem.

    Motiv také poskytuje řadu procedur, které lze použít k ovládání vstupního zaměření.

    Lesstif Nedávno byla vydána freewarová obdoba Motifu, která je s ním plně kompatibilní. Jmenuje se Lesstif. Lze jej volně získat ve zdrojové podobě a zkompilovat pro různé platformy na internetu.

    Tk/tcl

    Tcl - čtěte: - je zkratka pro: "tool command language" (instrumentální příkazový jazyk). Skládá se ze dvou částí: vlastního jazyka a knihovny.

    Jazyk tcl má jednoduchou syntaxi a snadno se s ním programuje. Ve své původní podobě je tcl interpret. Umožňuje vytvářet nové konstrukce, jako jsou funkce nebo programy, což poskytuje zkušenému programátorovi mocný nástroj pro vývoj nejen finálních aplikací, ale také vlastního rozšíření jazyka tcl, vytváření a udržování vlastního stylu.

    Knihovna tcl poskytuje možnost použití aplikační programy ah interprety jazyka tcl, a proto zahrnují skripty napsané v příkazový jazyk tcl. Knihovna obsahuje lexikální analyzátor jazyka tcl, funkce, které implementují vestavěné příkazy tcl, a umožňuje připojit k příkazům tcl vlastní podprogramy (volání funkcí). Toto uspořádání je možné pro C i C++.

    Tk je sada nástrojů kompatibilní s Motif pro vývoj grafických uživatelských rozhraní v prostředí X Window. Kromě standardního rozhraní pro C a C++ obsahuje rozhraní pro tcl, které poskytuje možnost používat zařízení Tk z prostředí interpretu příkazů tcl. To znamená, že kromě standardního programování v C a C++ lze části rozhraní aplikace implementovat jako skripty v jazyce tcl a tyto části rozhraní (dialogy, rozvržení obrazovky atd.) lze dynamicky upravovat za provozu konečný program pomocí příkazů tcl.

    Okenní prostředí "přání" vám umožňuje vytvářet aplikace s grafickým uživatelským rozhraním pouze za použití prostředků jazyka tcl.

    Podobné dokumenty

      Programovací systémy a jejich grafické možnosti. Vývoj multimediálního kurzu, který přispívá k efektivní asimilaci tématu "Grafické možnosti programovacího jazyka" studenty základní školy (na příkladu jazyků Základní programování a Pascal).

      práce, přidáno 29.12.2010

      Grafické komponenty obrazovky, systémové objekty a funkce. Systém prostředků interakce uživatele se zařízením. Historie grafických uživatelských rozhraní osobní počítače, jejich klasifikace. Systém X Window.

      prezentace, přidáno 22.05.2012

      Možnost programování a jednoduché grafiky. Základní struktury pro pohled a dva konstruktory s argumenty. Další souřadnice bodu a inicializace nového. Uložení a změna souřadnic levého horního rohu obdélníku.

      laboratorní práce, přidáno 12.1.2011

      Vektorová počítačová grafika. Grafická primitiva. Grafické vlastnosti programovacího jazyka Pascal. Pokyny pro studium grafiky v programovacím jazyce Pascal. Konstrukce grafů funkcí.

      semestrální práce, přidáno 13.06.2007

      Vývoj programu pro operační systém Windows pomocí VisualC++ (6.0, .NET). Zvážení základů softwarové simulace provozu zařízení (rychlovarné konvice). Pravidla pro tvorbu tříd zařízení a jeho grafického rozhraní.

      semestrální práce, přidáno 6.3.2014

      Počítačová grafika. Reprezentace grafických informací v počítači. Grafické formáty. Grafický editor. Vektorová grafika. CorelDraw. Charakteristika programu, rozhraní. Technologické možnosti a použití CorelDraw.

      semestrální práce, přidáno 19.05.2007

      Role distribuovaných výpočetních systémů při řešení moderních problémů. Systém nástrojů DVM pro vývoj paralelních programů. Nástroje pro sestavení formálního modelu grafického rozhraní. Požadavky na grafické rozhraní systému MVDr.

      semestrální práce, přidáno 15.10.2010

      Podstata programování pomocí prostředí Delphi 7 a jeho hlavní grafické možnosti. Struktura samostatné kompilace softwarový modul a jeho principy. Základní techniky práce s grafickými postupy, konstrukce oblouku, kružnice a elipsy.

      semestrální práce, přidáno 16.12.2011

      Rozsah počítačové grafiky. Typy počítačové grafiky. Barevné rozlišení a barevné modely. Software pro vytváření, prohlížení a zpracování grafických informací. Grafické možnosti textových procesorů, grafické editory.

      test, přidáno 06.07.2010

      Vývoj grafických uživatelských rozhraní. Správci zařízení a oken systému X Window. Popis plochy a aplikací KDE a GNOME. Přehled základních principů organizace rozhraní v systému Windows, popis jeho aplikačního balíku.

    Při vývoji aplikačních programů se zdá užitečné tvořit GUI. Ve skutečnosti se jedná o vytvoření prostředí pro výpočet úloh určité třídy bez programování uživatelem. Zpravidla má smysl vyvíjet taková rozhraní pro úlohy s více parametry, pokud se mají takové problémy řešit opakovaně. V tomto případě je vhodné vyvinout grafické rozhraní, které uživateli pomůže získat výsledky řešení problému (obvykle v grafické podobě) s určitou volbou parametrů. Takové rozhraní může být výhodné i při tvorbě učebních úloh, protože student v tomto případě nevěnuje hlavní pozornost programování nebo řešení problému, ale výběru požadovaných parametrů, analýze a pochopení výsledků.

    Z výše uvedeného stručného úvodu je zřejmé, že povinnými prvky grafického rozhraní při řešení vědeckých a/nebo vzdělávacích problémů by měly být:

    1. Jedno nebo více oken pro zobrazení grafických výsledků výpočtu.

    2. Několik editovatelných oken, pomocí kterých se nastavují a/nebo mění hodnoty parametrů úlohy.

    3. Ovládací tlačítka, která umožňují spustit a zastavit proces výpočtu, překreslit výsledky, ukončit úlohu.

    4. Vysvětlující popisky (statický text).

    Samozřejmě jsou možné i další ovládací prvky, jako jsou rolovací seznamy, přepínače pro výběr jedné z mnoha možností atd., ale v tomto návodu se podrobně podíváme pouze na čtyři uvedené typy. Obrázek 8 ukazuje nejjednodušší rozhraní, vytvořený ke studiu úderů vytvořených přidáním dvou harmonických kmitů s blízkými frekvencemi. Jak je vidět z obrázku, jsou v něm přítomny všechny výše uvedené prvky.

    K vytvoření takového rozhraní můžete použít funkce grafického výstupu a také speciální funkci určenou pro interaktivní interakci uživatele s výkresem. Tato funkce se nazývá uicontrol. Ale pro zjednodušení práce a vytvoření stejného typu prvků rozhraní v systému MATLAB existuje speciální program, který umožňuje vytvářet požadované prvky na úrovni vizuálního programování téměř bez psaní kódu.

    Rýže. 8. Nejjednodušší grafické uživatelské rozhraní pro řešení problému „Beating“.

    9.1. Vytvoření vzhledu rozhraní

    V této části se podíváme na použití MATLABu k vývoji vzhledu grafického rozhraní (GUI -GraphicsUserInterface) pomocí grafických (vizuálních) programovacích nástrojů. Chcete-li zavolat vizuální editor, musíte zadat příkaz guide v příkazovém okně MATLABu. Po určité době, určené rychlostí vašeho počítače, se objeví dvě nová okna, jak je znázorněno na obrázku 9. Jedním z nich je ovládací panel (Ovládací panel, na obrázku vlevo) a formulář nebo kreslicí plocha (Obrázek, na obrázku vpravo). Tato okna se mohou překrývat, ale kvůli přehlednosti jsme je umístili vedle sebe. Pokud průvodce neexistuje, před zavoláním průvodce se na obrazovce zobrazí obrázek uvedený výše. venkovní kresba. Pokud je funkce průvodce zavolána po nakreslení výkresu, otevře se místo prázdného výkresu. O vytvoření grafického rozhraní budeme uvažovat od samého začátku.

    Před vytvořením GUI je dobré si „nakreslit“, co chcete mít jako rozhraní. Uvažujeme příklad výstupu tří různých signálů ve třech podoknech, které by z hlediska grafiky na vysoké úrovni byly určeny operátory subplot(3,1,k), kde k je číslo grafu. Kromě,

    Rýže. 9. Celkový pohled na vizuál grafický editor a upravovat okna

    napravo od skutečných podoken s grafy chceme mít tři upravitelná

    , ve kterém můžete zadávat / upravovat číselné hodnoty tří

    proměnné. Nechť tyto proměnné nabývají libovolných hodnot.

    V této prezentaci nebudeme vybavovat naše editovatelná zaškrtávací políčka.

    koy, zda zadané hodnoty splňují nějaké podmínky, i když to může být

    Umět. Nazvěme tyto proměnné N, R, C. In tento příklad znamená výpočet

    proud v RC obvodu, když je na svorky přiveden signál s číslem N a R a C jsou odporové

    iontů a kapacity v obvodu (podrobný popis úlohy viz odstavec 10 hlavní

    text manuálu).

    Naše rozhraní by mělo umožňovat změnu hodnoty

    hodnoty N, R a C, které jsou uspořádány ve třech

    jeden nad druhým signálem podoken (napětí,

    aplikovaný na svorky), derivace signálu

    la a odporové napětí U r . Na rozdíl od

    okna pro zobrazování grafů a upravitelná okna

    R u n Ex i t

    vstup musí být umístěn na panelu rozhraní -

    sa dvě další tlačítka - RUN - spuštění programu

    Rýže. 10. Pohled na rozhraní

    účtu a EXIT - ukončení prac. a výmaz

    grafické okno.

    V první fázi je nutné vyvinout vzhled rozhraní. Nechat být

    podle našeho předběžného náčrtu by rozhraní mělo vypadat nějak takto

    následovně (obr. 10). Prvky tohoto rozhraní jsou tři okna

    výstup grafu (osy z hlediska ovládacího panelu), tři statické popisky N,R,C (text ), tři okna pro zadávání/editaci dat (editovat ) a dvě tlačítka (stisknout ).

    Pro vytvoření podoken, ve kterých se bude zobrazovat grafika, použijte tlačítko zobrazené na obrázku vpravo (okno a osy). Kliknutím na tento prvek na ovládacím panelu a najetím myši na panel kreslení je třeba umístit křížek, který bude na špičce myši.

    kde by měl být levý horní roh prvního podokna. Stiskněte a podržte levé tlačítko myši, musíte výsledný obdélník roztáhnout na požadovanou velikost. Poté se postup pro konstrukci dalších dvou oken opakuje obdobně.

    Tlačítko Upravit zobrazené vpravo se používá k vytvoření upravitelných vstupních polí. Používá se stejně jako při vytváření podoken s osami. Nejprve se objeví myš zatížená křížkem, pomocí které se sestaví vstupní obdélník.

    Popisky panelu obrázků se vytvářejí pomocí textového tlačítka, které se zalamuje a zarovnává stejným způsobem, jak je popsáno výše. Aby se jakýkoli text objevil uvnitř oblasti statického textu,

    nápisu, je nutné pracovat s editorem vlastností, který se vyvolá buď pomocí tlačítka Editor vlastností , nebo pomocí dvojí poklepání levé tlačítko myši na odpovídající objekt v panelu výkresu.

    Chcete-li vytvořit a umístit tlačítka, použijte panel s názvem Push . Způsob umístění tlačítka a výběr jeho velikosti je přesně stejný, jak je popsáno výše pro editační okno a statické textové okno.

    Takto vytvořená výstupní a editační okna, statická textová okna a tlačítka, stejně jako další objekty, lze zarovnat a nastavit mezi nimi určité mezery pomocí panelu Nástroje pro zarovnání.

    Chcete-li to provést, klikněte na příslušné tlačítko na ovládacím panelu a zobrazí se panel zarovnání. Pro nastavení počtu objektů, se kterými se budou provádět jakékoli akce, je nutné je vybrat kliknutím na každý z nich při stisknuté klávese Shift. Vybrané objekty jsou označeny

    černé tečky kolem příslušných objektů. Pokud potřebujete změnit velikost libovolného objektu (tlačítko, okno atd.), musíte na tento objekt kliknout levým tlačítkem myši a pomocí myši změnit požadovanou velikost stejně jako velikost libovolného okna Windows .

    Při práci s grafickými objekty na obrazovém panelu je vhodné otevřít (pomocí příslušného tlačítka okna Windows) obrazový panel na celou obrazovku a vybrat velikost všech objektů na obrazovém panelu.

    Protože všechny objekty mají ve výchozím nastavení velikost v pixelech, může to způsobit překrytí tlačítek a/nebo oken při změně velikosti výstupního okna. Aby k takovému nežádoucímu jevu nedocházelo, je nutné nastavit velikostní jednotky všech objektů v bezrozměrných proměnných – zlomcích velikosti okna. Tato velikost se nazývá normalizovaná. Chcete-li to provést, musíte zavolat editor vlastností kliknutím na tlačítko na ovládacím panelu s přesahem

    psaní editoru nemovitostí. Po označení všech objektů, které jsme zadali v horním okně editoru vlastností (podržením klávesy Ctrl a výběrem objektů levým tlačítkem myši), ve spodním okně editoru vlastností najdeme vlastnost Units (měrné jednotky) a vyberte jej kliknutím levého tlačítka myši. Poté se ve střední části editoru ve speciálním okně objeví vlevo vlastnost Units a vpravo okno pro výběr hodnoty, ve kterém je rozbalovací seznam s platnými hodnotami vlastností. Vlastnost Units musí být nastavena na normalized . Podobně je potřeba nastavit hodnotu vlastnosti FontUnits - měrné jednotky pro velikost písem. Tím je zajištěno, že se při změně velikosti okna změní velikost písma.

    Chcete-li umístit nápisy na tlačítka a do oblasti statického textu, vyberte odpovídající objekt (buď poklepáním přímo v oblasti obrázku, nebo v horním okně editoru vlastností) a v dolním okně editoru vlastností , najděte vlastnost String a po jejím výběru zadejte požadovaný text mezi uvozovky (např. 'Start' na příslušném tlačítku). Chcete-li nastavit titulky nad každým z výstupních oken, vyberte odpovídající okno a zavolejte editor vlastností8, v jehož spodním okně musíte najít vlastnost Title .

    8 Editor vlastností lze vyvolat nejen pomocí tlačítka na ovládacím panelu, ale

    a dvojitým kliknutím na odpovídající objekt.


    9. července 2003

    S příchodem různých nástrojů pro vývoj vizuálních aplikací se psaní grafických programových rozhraní stalo jakousi dětskou hrou. Šťouchl jsem myší - objevila se plíseň, šťouchl do ní podruhé - tlačítko se nakreslilo. Zdá se mi, že mnozí nyní neuvažují o jiném způsobu programování v grafickém prostředí. Samozřejmě nelze namítat proti pokroku, při psaní velkých projektů jsou všechny tyto vymoženosti velmi užitečné. O tom ale rozhovor není. Někdy to dochází až k absurditě, primitivní aplikace je napsána pomocí MFC, VCL atd. Takové programy žerou paměť jako termiti a zabírají svým tukovým tělem nadbytečné místo na disku. Analogy MFC/VCL zpravidla „váží“ desetkrát až dvacetkrát více než programy napsané v čistém API. A Visual Basic(ať mi Bůh odpustí tuto frázi) s jeho msvbvmXX.dll? Ano a systémové prostředky utrácí mnohem více (několikrát). Chudí uživatelé, odpírající si pivo, šetří bankovky na nákup nového hardwaru. Není to škoda pro chudé? Nejen programátoři pijí pivo? V kódování API je ještě jeden pozitivní moment, programátor se sblíží s operačním systémem. Podle toho jí lépe rozumí a ovládá. A ano, je to prostě velká zábava. Opakuji, vše výše uvedené platí konkrétně pro malé, jednoduché programy, ve velkých projektech je vše úplně jinak.

    Doufám, že jsem vás přesvědčil. Jít.

    Podíváme se na vytvoření jednoduchého okenního rozhraní s minimální funkčností. Bude to jednoduché okno se dvěma vstupními poli a dvěma tlačítky. Když kliknete na tlačítko "Kopírovat", text z prvního vstupního pole se zkopíruje do druhého. Po kliknutí na tlačítko "Zavřít" program ukončí svou práci. V budoucnu může sloužit jako šablona pro psaní dalších, složitějších, aplikací. Komunikovat budeme v C / C ++, i když neurazíme ani Delphi. Obecná zásada stejné, jen syntaxe je jiná. Chcete-li pracovat se systémovými zprávami a funkcemi API, musíte do projektu zahrnout soubory záhlaví; v C/C++ je to windows.h, v Delphi jsou to windows a moduly zpráv.

    Každý program Windows se skládá ze tří hlavních částí: hlavní funkce, smyčka zpráv a funkce okna, která zpracovává všechny zprávy odeslané do okna.

    Náš program začíná funkcí WinMain(). Toto je hlavní funkce. Funkce WinMain() obvykle provádí následující úkoly:

    • Určuje třídu okna. Nesmí být zaměňována s třídou OOP.
    • registrů daná třída v systému.
    • Vytvoří hlavní okno aplikace a další ovládací prvky.
    • Zobrazí na obrazovce okno.
    • Spustí smyčku zpráv.
    • Deklaruje se takto: int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) Pojďme se zabývat parametry:
      • hInstance je popisovač aktuální instance aplikace.
      • hPrevInstance – popisovač předchozí instance aplikace, pokud je spuštěna.
      • lpCmdLine - ukazatel na řetězec obsahující parametry předané programu při spuštění.
      • nCmdShow - konstanta, která určuje způsob zobrazení okna. (Viz SW_ konstanty).

    V Delphi se takového obrázku nedočkáme, v tomto vývojovém prostředí je hlavní funkce programátorovi skryta překladačem. I když je samozřejmě přítomen v konečném kódu. Pro registraci třídy okna je nutné vyplnit pole struktury typu WNDCLASS (v Delphi TWNDCLASS). Za tímto účelem jsme deklarovali proměnnou wcl. wcl.hInstance = hInstance; Popisovač aktuální instance aplikace, proměnná hInstance je inicializována funkcí WinMain(). V Delphi je implicitně inicializován. wcl.lpszClassName = szWinName; Jméno třídy. Předem jsme vytvořili a inicializovali řetězcovou proměnnou szWinName. wcl.lpfnWndProc = WindowFunc; Ukazatel na funkci okna. styl wcl = 0; Konstanta, která určuje styl okna. K tomu se používají příznaky CS_, jen jsem je resetoval. Kombinaci příznaků můžete určit pomocí bitové operace „nebo“. wcl.hIcon = LoadIcon(NULL, IDI_ASTERISK); Popisovač ikony aplikace vrácený funkcí LoadIcon(). Nahrál jsem výchozí ikonu. Viz konstanty IDI_. wcl.hCursor = LoadCursor(NULL,IDC_ARROW); Popisovač kurzoru aplikace vrácený funkcí LoadCursor(). Nahrál jsem standardní šipku. Viz konstanty IDC_. wcl.lpszNazevNabidky = NULL; Ukazatel na řetězec, který určuje název zdroje nabídky pro tuto třídu okna. Žádné menu, žádný ukazatel. wcl.cbClsExtra = 0; vyhrazené pole. Resetujeme. wcl.cbWndExtra = 0; vyhrazené pole. Resetujeme. wcl.hbrBackground = (HBRUSH)COLOR_WINDOW; Barva okna. Konstanta COLOR_WINDOW je přetypována na typ HBRUSH (není nutné přetypovávat v Delphi). Pomocí funkce GetStockObject() můžete také nastavit barvu štětce okna nebo obrázek pozadí. Nyní směle zaregistrujte třídu okna.

    RegisterClass(&wcl); Ukazatel na strukturu wcl je předán jako parametr funkci RegisterClass.

    S dalším řádkem vytvoříme naše okno.

    hMainWnd = CreateWindow(szWinName, "Jednoduché okno na API.", WS_OVERLAPPEDWINDOW ^ WS_THICKFRAME ^ S_MAXIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 300, 170, HWND_DESKTOP, NULL, hInstance, NULL);
    • První parametr je název třídy okna.
    • Druhým parametrem je název okna.
    • Třetím parametrem je styl okna. Ze standardního WS_OVERLAPPEDWINDOW jsem pomocí operace xor odstranil možnost škálování okna a deaktivoval tlačítko pro maximalizaci.
    • Čtvrtá a pátá - pozice okna z levého horního rohu obrazovky. Mám CW_USEDEFAULT, s touto hodnotou systém vybere pozici okna automaticky.
    • Šestým a sedmým parametrem je šířka a výška okna.
    • Osmým parametrem je okno vlastníka. V hlavním okně je vlastníkem plocha (0). Ovládací prvky mají hlavní okno.
    • Devátý je ukazatel na úchyt nabídky. Žádné menu, žádný ukazatel.
    • Desátý parametr je popisovač aktuální instance aplikace.
    • Jedenáctý – Používá se při vytváření aplikací s rozhraním MDI. Nepotřebujeme.
    Funkce vrací do vytvořeného okna handle, který je uložen v proměnné hMainWnd.
    Popisovač okna je jedinečné číslo v systému, které identifikuje okno nebo ovládací prvek.

    Dále vytvoříme potřebné ovládací prvky. Všechny ovládací prvky jsou stejná okna, jen mají jiný název třídy. Kontrolní třídy není nutné registrovat, jsou již předdefinovány v systému. Tlačítko - tlačítko třídy. Vstupní pole - upravit třídu. Nápis je ststic class. Existuje mnoho tříd, které odpovídají standardním ovládacím prvkům. Ovládací prvky vytváříme pomocí známé funkce CreateWindow() a neznámé funkce CreateWindowEx(). CreateWindowEx() umožňuje vytvořit okno s rozšířeným stylem. Používáme jej k vytváření vstupních polí. V této funkci byl přidán první parametr, který nastavuje tento velmi rozšířený styl, zbývající parametry jsou stejné jako u CreateWindow (). Ovládací prvky jsou podřízená okna, jejich vlastníkem je hlavní okno.

    Při vytváření ovládacích prvků musíte v parametrech funkce zadat deskriptor hlavního okna a také styl okna WS_CHILD. Vzhled a funkčnost ovládacích prvků lze ovládat pomocí příznaků: WS_, ES_, BS_, SS_, jejich kombinací s bitovou operací "nebo". Při vytváření ovládacích prvků inicializujeme odpovídající proměnné s jejich úchyty, které jsou vráceny funkcemi CreateWindow() a CreateWindowEx(). Potřebujeme tyto deskriptory další práce s ovládáním. Okno, které jsme vytvořili, zobrazíme na obrazovce a překreslíme.

    Funkce GetMessage vybere další zprávu z fronty zpráv aplikace a odešle ji do okna.
    • Prvním parametrem je struktura typu MSG (v Delphi typ TMSG)
    • Druhým parametrem je popisovač okna, kterému je zpráva určena. Pokud je NULL nebo 0, pak všechna okna aplikace.
    • Třetí a čtvrtá - umožňují nastavit rozsah přijímaných zpráv. Pokud je 0, pak všechny zprávy adresované do okna.
    GetMessage – vrátí FALSE, když se zobrazí zpráva WM_QUIT, v takovém případě se smyčka ukončí a aplikace se ukončí. TranslateMessage – překládá kódy virtuálních kláves do zpráv na klávesnici. DispatchMessage – Odešle zprávu funkci okna ke zpracování.

    Funkce okna poskytuje funkčnost programu zpracováním systémové zprávy. Funkce okna je funkce CALLBACK, tzn. volaný operačním systémem v reakci na příchozí novou zprávu. Funkce okna je deklarována takto:

    LRESULT CALLBACK WindowFunc (HWND hMainWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

    • HMainWnd - manipulace s hlavním oknem.
    • iMsg – číslo zprávy. Viz konstanty WM_.
    • lParam a wParam jsou parametry zpráv.

    Když se objeví zpráva, můžeme porovnat parametr iMsg s některou z konstant WM_ a naprogramovat vhodnou reakci programu.

    Například: když je stisknuto levé tlačítko myši a ukazatel myši je nad klientskou oblastí okna, spustí se událost WM_LBUTTONDOWN. Zavolá se funkce okna, do parametru iMsg se zadá hodnota konstanty WM_LBUTTONDOWN, můžeme zkontrolovat podmínku a naprogramovat reakci programu, kterou potřebujeme.

    Uvnitř funkce okna je příkaz select, který provádí výše uvedený úkol. Příkaz výběru musí obsahovat výchozí handler, který je implementován pomocí DefWindowProc(hMainWnd, iMsg, wParam, lParam);

    Pokud se tak nestane, náš program zemře a neožije. Mnoho zpráv je zpracováváno samotným systémem, jako například: změna velikosti okna, minimalizace / maximalizace okna, vyvolání systémové nabídky atd. K tomu slouží DefWindowProc().

    Při práci s ovládacími prvky okna je do okna vlastníka odeslána zpráva WM_COMMAND, kde lParam obsahuje popisovač ovládacího prvku a vysoký bajt parametru wParam je identifikátorem události vyvolané ovládacím prvkem. Například: při kliknutí na tlačítko - BN_CLICKED. Viz konstanty BN_, WM_. Program můžeme zavřít pomocí funkce PostQuitMessage(0). Tato funkce odešle do okna zprávu WM_QUIT.

    Pár slov o tom, jak psát takové programy v Delphi. Vytvoříme nový projekt, spustíme Project Manager, odstraníme Unit1 spolu s formulářem. Stiskněte Ctrl + F12 a otevřete soubor projektu. Odebereme modul formulářů z použití, přidáme tam okna a zprávy. Smažte vše mezi začátkem a koncem. Příprava je hotová. Můžete kódovat. Není možné psát programy na čistém API bez pomoci, která by měla být vždy po ruce. Kdybys byl sám Gates, nemůžeš si pamatovat všechno. Doporučuji:

    • za prvé - MSDN;
    • systém nápovědy Delphi (soubor MSTOOLS.HLP);
    • http://www.soobcha.ru/rushelp má ruskou nápovědu k Win32 API.
    To je vše.
    Hodně štěstí.

    Bobačenko Maxim Stažení: CreateWnd.zip(2,6 tis.)
    archiv obsahuje soubory windows.cpp a windows.dpr

    vývoj GUI

    Klíčovým prostředkem interakce uživatele s programem je grafické uživatelské rozhraní (GUI). GUI libovolného softwarový produkt je jedním z klíčových faktorů jeho popularity.

    Vytvoření kompetentního uživatelského rozhraní je pracný proces a vyžaduje maximální pozornost k detailům. Vytvořené rozhraní by mělo maximalizovat možnosti programu, ale zároveň nepřetěžovat uživatele množstvím nabídek, tlačítek, obrázků a textu.

    V praxi programování aplikací pro Windows zahrnuje rozsáhlé používání různých nástrojů a průvodců. S přihlédnutím ke standardům zvoleného operačního systému bude mít softwarový nástroj rozhraní v okně. Důvodem je především skutečnost, že okna jsou hlavními prvky grafického rozhraní v operačních systémech (OS) rodiny Windows. Jsou to obdélníkové oblasti, které mají svá vlastní nastavení, vlastnosti a typy.

    Grafická část tréninkového bloku obsahuje čtyři typy oken:

    Hlavní okno -- obsahuje všechny prvky pro navigaci v programu a také Dodatečné informace nezbytné pro pohodlí práce s PS;

    Okna správy informační databáze -- zahrnují všechny ovládací prvky informační komponenty softwarového nástroje. Poskytují přidávání testů, informací, nových uživatelů a správců, umožňují manipulovat s nově vytvořenými nebo existujícími daty;

    Windows pro práci s funkcemi softwaru - poskytují práci s hlavními funkcemi školicího bloku, jako je složení testů a studium přednášek;

    Okna pro zobrazení informací a statistik -- slouží k zobrazení informací jiný druh stejně jako statistiky a grafy.

    Hlavní okno programu bude obsahovat následující ovládací prvky a výstup informací:

    Název okna, který obsahuje název programu a účel okna;

    Tlačítka systémové nabídky, která jsou zodpovědná za změnu velikosti, minimalizaci a ukončení programu;

    Plocha záhlaví okna, která má jedinou funkci dekorace a je nezbytná pro dodržení celkového rozhodnutí o designu;

    uvítací oblast;

    Oblast zobrazení pro den v týdnu, aktuální datum a čas;

    Uživatelský panel nástrojů obsahující tlačítka pro přístup k hlavním funkcím programu;

    Administrativní panel, obsahuje tlačítko pro přístup administrativní prvkyřízení PS;

    Stavový řádek, který zobrazuje informace o všech režimech programu.

    Schéma hlavního okna grafického rozhraní (pohled na okno pro administrátorský účet) je na obrázku 3.2

    Obrázek 3.2 - Schéma hlavního okna grafického rozhraní: 1 - nadpis okna; 2 -- tlačítka systémové nabídky; 3 -- oblast záhlaví okna; 4 -- stavový řádek; 5 -- uvítací oblast; 6 -- výstupní oblast dne v týdnu, datum a čas; 7 -- administrativní panel; 8 -- uživatelský panel; 9 -- tlačítko pro přístup do fáze učení; 10 -- tlačítko pro přístup do testovací fáze; 11 -- tlačítko pro zobrazení statistik a grafů; 12 -- výstup; 13 -- tlačítko pro přístup do administrativní části aplikace

    S ohledem na směr vyvíjeného softwaru bylo vyvinuto několik nestandardních grafických řešení s cílem upoutat pozornost a větší zájem o aplikaci. Navíc vám to umožňuje získat určitou individualitu mezi zbytkem řady programů podobných témat a zaměření.

    Jedno z těchto řešení lze nazvat barevné a vytváří jedinečný design, prvky rozhraní, které v této oblasti nemají obdoby. Mluvíme o animovaných vložkách založených na flash-animaci. Pomocí nich je realizován návrh názvů všech hlavních funkčních oken, navigačních prvků, rozhraní registračního a autorizačního formuláře. Hlavní výhody tohoto vývoje jsou: implementace příjemného a přátelského rozhraní; výrazné zjednodušení používání programu jak na uživatelské, tak na administrativní úrovni.

    Další z hlavních výhod mezi analogovými programy, jak v softwarové, tak v grafické implementaci, je organizace absolvování testů na vyžádání. Aby uživatel prošel tímto typem testu, potřebuje sestavit SQL dotazy ze samostatných, nezávislých prvků. V závislosti na typu požadavku, který je potřeba sestavit na základě podmínek navržené úlohy, se vytvoří určitý polygon pro sestavení. Polygon obsahuje pole pro substituci operátorů, které se do nich přetahují myší ze samostatného bloku, a vstupní pole pro názvy tabulek, polí a podmínek.

    Uživatelské statistiky jsou implementovány ve formě grafů, které jsou sestaveny v závislosti na jím získaných výsledcích. Každý test má svou vlastní dynamiku. Grafy obsahují všechny potřebné popisky, jsou implementovány pomocí komponenty TChart, a proto mají spoustu ovládacích prvků, které jsou standardně zabudovány do komponenty a ve výsledku jsou implementovány v aplikaci.

    Kvůli přívětivější vizualizaci byly nahrazeny styly záhlaví tabulky namísto těch, které jsou implementovány ve výchozím vývojovém prostředí.

    Implementovaná grafická řešení tak umožnila dosáhnout výsledku, který předpokládá samotná myšlenka designu GUI. Vytvořené rozhraní maximalizuje možnosti programu, ale zároveň nezatěžuje uživatele množstvím nabídek, tlačítek, obrázků a textu.