A WEL library Az eiffel programozási nyelv Windows API burkoló osztálykönyvtára.

Slides:



Advertisements
Hasonló előadás
2010/2011 ősz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál  Részei.
Advertisements

Grafikus tervezőrendszerek programozása 10. előadás.
GoldWorks grafika. Grafikus objektumok  előre definiált keretek  images (egy vagy több rés értékének reprezentálása)  canvases (image-ek megjelenítésére)
Operációs Rendszerek I.
Programozás III STRING-XML.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Számítógépes geometriai leíró nyelvek
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Grafika. 2 Mértékek és koordináta rendszer Használjuk a RGB és QBColor függvényeket a színekhez Grafika létrehozása Load/change picture futási időben.
XPCE Grafikus felületek Prologhoz Tóth Balázs György VFLP 2003.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
STÍLUSOK Tulajdonságok és értékek. Színek megadási módjai H1 {color: #CCF150} H1 {color: rgb(204,241,80)} H1 {color: rgb(80%,95%,30%)} H1 {color: red}
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
Leírónyelvek: HTML és XHTML
Hernyák Zoltán XML és HTML.
Ellenőrző kérdések a)Auto-indexing enabled b)Auto-indexing disabled c)Nem eldönthető 1.
Alapok 2013/2014, őszi szemeszter gyakorlati foglalkozás Automatizálási tanszék.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Adatbázis-kezelés ACCESS program:
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
VFP programozása report készítése menü készítése dinamikus elemek
C# tagfüggvények.
Készítette: Keszthelyi Zsolt
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Kliensoldali Programozás
Delphi programozás Delphi programozás SRTNB előadás - Borland Delphi – fontosabb komponensek tárgyalása Nagyváradi Anett.
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
JavaScript a gyakorlatban. 7. Gyakorlat DHTML  Fa-struktúrájú menük létrehozása  Legördülő menük létrehozása.
Multimédiás programok készítése Macromedia Director rendszerben 2. előadás Készítette: Kosztyán Zsolt
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Grafikus tervezőrendszerek programozása 11. előadás.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Kedves Kolléga, kérlek, hogy PowerPoint előadásaidhoz ezt a file-t használd fel alapként! a bemutatóban már van néhány, általunk összeállított dia, melyeket.
Rajzolás WPF alkalmazásokban
Fájlkezelés Pascalban
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
CSS A CSS bemutatása.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Delphi Készítette: Rummel Szabolcs Elérhetőség:
Hyper Text Markup Language
Hyper Text Markup Language
Visual Basic 2008 Express Edition
Visual Basic 2008 Express Edition
Web-grafika II (SVG) 1. gyakorlat
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Java programozási nyelv Adatbekérés konzolról
Webprogramozó tanfolyam
Grafikai lehetőségek WPF-ben Egyszerű grafika (Shape-ek)
A C++ nyelv.
Webprogramozó tanfolyam
Egyéb interpreterek Windows Script Host Internet Explorer Hypertext application.
Java web programozás 7-8..
Bevezetés - Vonalak. Koordinátarendszer Windows form x y Az y lefelé nő Transzformáció a hagyományosra x Eltolás y Ellentett és eltolás.
Számítógépes Grafika 4. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
A Visual Basic és a programozás oktatása
Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Windows Forms alkalmazás készítése Czigléczky Gábor 2009.
Alapok Gyakorlat 2015/16 őszi szemeszter Automatizálási tanszék.
Neumann János Informatikai Kar
A CLIPS keretrendszer
Cascading Style Sheet.
Standard párbeszédablakok
Előadás másolata:

A WEL library Az eiffel programozási nyelv Windows API burkoló osztálykönyvtára

Mi is a WEL? Eiffel supercluster, amely a Windows API programozásához szükséges eszközöket tartalmazza. Csak azt, de azt teljes körűen. Nem több mint egy burkoló osztálykönyvtár, de minden API szolgáltatás eléréséhez eszközöket ad.

WEL supercluster szerkezete 10 darab cluster  windows Az ablaktípusokat megvalósító osztályok.  gdi és gdistock A rajzolást elősegítő osztályok.  controls A windows szabványos controljaihoz tartozó osztályok.  stddlgs A windows beépített dialógusablakaihoz tartozó osztályok.  consts, messagess, shared, structs és support egyéb winAPI szolgáltatást burkoló osztályok, segédosztályok, adatszerkezetek és konstansok.

WEL_APPLICATION Ebből az osztályból származtatva készíthetünk WEL alkalmazást. Ez egy absztrakt osztály. A származtatás során az új osztály törzsében meg kell valósítanunk a main_window: WEL_COMPOSITE_WINDOW –t, amely az alkalmazásunk főablaka lesz. Ezt a két lépést (a származtatást és a megvalósítást) az eiffel fejlesztői környezete automatikusan elvégzi helyettünk, ha WEL grafikus projectet kérünk.

A legegyszerűbb WEL alkalmazás (minimal_demo.e) class MINIMAL_DEMO inherit WEL_APPLICATION rename make as base_make end create make feature make is do create main_window.make_top ("WEL minimal application") base_make end

A legegyszerűbb WEL alkalmazás (minimal_demo.ace) system "minimal_demo" root MINIMAL_DEMO: make Default --… cluster root_cluster:"$ISE_EIFFEL\examples\wel\minimal" all base:"$ISE_EIFFEL\library\base" exclude "table_eiffel3"; "desc"; end all wel:"$ISE_EIFFEL\library\wel" exclude "spec"; "clib"; end external include_path: "$(ISE_EIFFEL)\library\wel\spec\windows\include" object: "$(ISE_EIFFEL)\library\wel\spec\$(ISE_C_COMPILER)\lib\wel.lib" end

Még egyszerűbben class MINIMAL_DEMO inherit WEL_APPLICATION create make feature main_window: WEL_FRAME_WINDOW is once create Result.make_top ("WEL Minimal application") end end -- class

windows cluster Az ablaktípusokat tartalmazza. Definiálja a WEL_WINDOW osztályt, ami minden megjeleníthető ablak ősosztálya.

Fontosabb ablaktípusok WEL_FRAME_WINDOW  A legáltalánosabban használt ablaktípus, általában ez alkotja egy alkalmazás főablakát.  A megszokott controlokon kívül tartalmazhat menüt és státuszbárt is. WEL_MAIN_DIALOG  Dialógus alapú alkalmazások főablakának típusa WEL_MODAL_DIALOG  Modális dialógusablak; főablakból megnyíló ablakok létrehozására.  Létezik modeless változata amely nem modális dialógusablakot hoz létre. WEL_CONTROL_WINDOW  Saját controlok létrehozására alkalmas.

Két út a designhoz 1. Resources file Ablakok megtervezhetőek (Microsoft Developer Studio vagy Borland Resource Workshop) vizuális tervezőeszközökkel. A tervezőeszközök által generált.rc file-okból a ResourceBench és a h2e programok segítségével generálható az eiffel kód. 2. Eiffel kód Az ablak design-ját kialakító kódot teljes mértékben kézzel írva alakítjuk ki a megjelenést.

Rajzolás a képernyőre A szükséges osztályokat a gdi és a gdistock cluster tartalmazza. Rajzolni lehet, bármely WEL_WINDOW vagy WEL_CONTROL leszármazottjára. A rajzolás egy WEL_DC (vagy leszármazott) típusú objektumon keresztül lehetséges.

Rajzolás példa feature drawline (x1: INTEGER, y1: INTEGER, x2: INTEGER, y2: INTEGER) is local dc: WEL_CLIENT_DC do create dc.make (Current) dc.get dc.line (x1,y1,x2,y2) dc.relase end

Problémák Az előző példánál, átméretezéskor vagy ha a rajz elé kerül valami és eltakarja, majd pedig újra felűre kerül, akkor a kirajzolt vonal eltűnik. Ennek oka, hogy az ablak automatikusan újrarajzolja magát ha szükséges. Hogyan készíthetünk maradandó rajzot?

ON_PAINT A hozzátartozó törzs az ablak, vagy control újrarajzolásakor automatikusan fut le. „maradandó” rajzot hozhatunk létre a felüldefiniálásával. Saját control létrehozásának egyik fontos momentuma. A megjelenést határozhatjuk itt meg.

Rajzolás példa 2. inherit WEL_FRAME_WINDOW redefine on_paint --… end -- … feature on_paint (paint_dc: WEL_PAINT_DC; invalid_rect: WEL_RECT) is local rect : WEL_RECT; brush : WEL_BRUSH; color : WEL_COLOR_REF; do create rect.make (10,10,50,50); create color.make_by_color (255); create brush.make_solid (color); paint_dc.fill_rect (rect,brush); end

Színek, tollak, ecsetek WEL_COLOR_REF  Színeket reprezentál. Létrehozhatjuk RGB összetevőkből, vagy használhatunk egy a Windowsban definiált színt a létrehozására.  Az előre definiált színeket a WEL_COLOR_CONSTANTS, illetve a WEL_STANDARD_COLORS osztályok tartalmazzák. WEL_PEN  Toll, a vonalak rajzolásához szükséges. Beállítható a színe, a vastagsága, és a stílusa (pontozott, stb.…)  A használható vonalstílusokat a WEL_PS_CONSTANTS, míg néhány előre definiált tollat a WEL_STANDARD_PENS osztály tartamaz. WEL_BRUSH  Ecset, amelynek beállíthatjuk a színét, mintázatát.  Az ecsetet felhasználva rajzolhatunk kitöltött objektumokat.  Előre definiált mintákat a WEL_HS_CONSTANTS osztályban találunk.  A minta lehet akár tetszőleges WEL_BITMAP is.

Alakzatok Rajzolhatunk üres alakzatokat,  line, rectangle, round_rect, ellipse, pie, polygon, poly_bezier, draw_text …  Szöveg kirajzolása előtt a „dc” objektumunknak megadhatunk egy WEL_FONT típusú objektumot, ami a betűtípust határozza meg. és kitöltötteket.  fill_rect, fill_region  A fill_region egy WEL_REGION-t vár paraméterül, ami lehet négyszög, polygon, vagy ellipszis.

Bitmap-ek kezelése WEL_BITMAP osztály szolgál a kezelésükre. Létrehozhatunk egy ilyen típusú változót  Resources file beli név alapján  Resources file beli ID alapján  Egy üres bitmap-et WEL_DC segítségével File-ból beolvasni egy kicsit komplikáltabb, kell hozzá:  RAW_FILE  WEL_DIB

Bitmap beolvasása file-ból (példa) Inherit --… WEL_DIB_COLORS_CONSTANTS export {NONE} all end --… feature on_paint (paint_dc: WEL_PAINT_DC; invalid_rect: WEL_RECT) is local file : RAW_FILE dib: WEL_DIB bitmap : WEL_BITMAP do create file.make_open_read ("eximage.bmp") create dib.make_by_file (file) create bitmap.make_by_dib (paint_dc, dib, Dib_rgb_colors) paint_dc.draw_bitmap (bitmap, 0, 0,bitmap.width, bitmap.height) end

Nyomtató kezelése Egy WEL_PRINTER_DC –n keresztül nyomtathatunk. Ilyet WEL_PRINT_DIALOG segítségével szerezhetünk. A megszokott rajzoló műveletek értelmezettek erre a „dc” –re is.

Nyomtatás példa local print_dialog: WEL_PRINT_DIALOG printer_dc: WEL_PRINTER_DC do create print_dialog.make print_dialog.activate (Current) if print_dialog.selected then printer_dc := print_dialog.dc printer_dc.start_document ("WEL Print Test") printer_dc.start_page printer_dc.line (0,0,printer_dc.width,printer_dc.height) printer_dc.end_page printer_dc.end_document end

Vágólap kezelése A WEL_CLIPBOARD osztályból származtatva tudjuk kezelni a vágólapot. inherit WEL_CLIPBOARD export {NONE} all end --… GetClipboardText :STRING is do open_clipboard (current) retrieve_clipboard_text Result.make_from_string (last_string) end SetClipboardText(a_text:STRING) is do open_clipboard (current) set_clipboard_text (a_text) end

Egérkurzor megváltoztatása inherit WEL_IDC_CONSTANTS export {NONE} all end feature cursor : WEL_CURSOR feature on_left_button_down (keys: INTEGER; x_pos: INTEGER; y_pos: INTEGER) is do create cursor.make_by_predefined_id (Idc_wait) end on_set_cursor (hit_code: INTEGER) is do if cursor /= void then cursor.set disable_default_processing end

WEL_MSG_BOX A Windows API szabványos felugró ablakainak burkolóosztálya A message_box_result attribútum tartalmazza, hogy melyik gombbal zártuk be az ablakot. WEL_ID_CONSTANTS osztályban vannak definiálva a gombokhoz tartozó ID-k. A set_language parancsal beállíthatjuk az ablakon megjelenített rögzített controlok szövegének a nyelvét. A nyelvkonstansokat a WEL_LANGUAGE_CONSTANTS tartalmazza. A set_flag függvény a style paraméter és a WEL_MB_CONSTANTS osztály segítségével meghatározhatjuk, hogy mi kerüljön az ablakra. Vannak előre definiált minták.

WEL_MSG_BOX 6 különböző előredefiniált minta: basic_message_box  normál megjelenés, OK gombbal.  beállítható a stílusa, a stílusokat a WEL_MB_CONSTANTS tartalmazza. error_message_box  hibaüzenetet jeleníthetünk meg vele, piros ikonnal, és egy OK gombbal information_message_box  információs üzenetet jelenít meg „buborékos i betű” ikonnal és OK gombbal question_message_box  Eldöntendő kérdés megjelenítésére szolgál.  Egy Yes és egy No gombbal. (angol nyelv esetén) user_icon_message_box  saját ikont helyezhetünk az ablakra warning_message_box  sárga felkiáltójeles ikont és egy OK gombot tartalmaz.

WEL_MSG_BOX (példa) feature on_left_button_down (keys: INTEGER; x_pos: INTEGER; y_pos: INTEGER) is local msg_box : WEL_MSG_BOX do create msg_box.make msg_box.question_message_box(current,"text", "title") if msg_box.message_box_result = IdYes then minimize end

Registry kezelése inherit WEL_REGISTRY export {NONE} all end --… local key: WEL_REGISTRY_KEY p: POINTER value: WEL_REGISTRY_KEY_VALUE do key := enumerate_key(hkey_current_config,0) set_text(key.name) p:=create_key (hkey_current_config, "my key",0) p:=open_key (hkey_current_config,"my key",2) create value.make (1, "alma") set_key_value (p,"my value",value) end