12.07.2015 Views

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

P R O G R A M U J E M EAssembler pod Windows10. èas : Resource IPrakticky každý program vo Windows používa zdroje (angl. resources). RC resource scriptsúbor definuje také veci ako menu, dialógové okná, ikony, bitmapy a iné zdrojové dátavyžadované aplikáciou. Súbor prostriedkov zabraòuje tomu, aby ste museli ma množstvoseparátnych súborov, ktoré by aplikácia <strong>na</strong>hrávala pod¾a potreby do pamäte. Resourcesscript súbory sa kompilujú pomocou kompilátora prostriedkov rc.exe. Nájdete ho v adresáribin a posledná jeho verzia je Microsoft Windows Resource Compiler, Version5.00.1823.1 – Build 1823. Len èo je <strong>sk</strong>ompilovaný programový súbor *.exe, súbor *.res sapripojí <strong>na</strong> jeho koniec. Všetky definované prostriedky v súbore *.rc sú teraz súèas ouprogramového *.exe a poèas vykonávania programu ich možno používa .Windows ponúka funkcie, ktoré <strong>na</strong>èítajú programové zdroje do pamäte, aby mohli bypoužité. S dvoma takýmito funkciami ste sa už stretli. Ide o funkcie LoadIcon a LoadCursor.Boli použité v ukážkových programoch v èasti, ktorá definuje štruktúru triedy ok<strong>na</strong>. Jedinouvýhodou používania zdrojov je možnos pripoji nieko¾ko typov zdrojov priamo k programovému*.exe súboru. Ak by nebolo možné tento mechanizmus použi , museli by by binárnesúbory, ako <strong>na</strong>pr. ikony, obrázky, umiestnené vsamostatných súboroch, ktoré by potom *.exesúbor pod¾a potreby <strong>na</strong>èítal do pamäte. Prípadneby <strong>na</strong>pr. iko<strong>na</strong> musela by v programe definovanáako pole bajtov. No pokia¾ je iko<strong>na</strong> zdrojom, jeumiestnená v samostatnom editovate¾nom súbore*.rc a do súboru *.exe je pridaná poèas linkovaniaprogramu. Výpis jednoduchého resourceObr. 1 Jednoduchý dialog box script súboru nájdete <strong>na</strong> <strong>www</strong>.pcrevue.<strong>sk</strong>; <strong>na</strong>obrázku 1 je jeho grafická reprezentácia.Pri resource súboroch rozlišujeme jednoriadkové (<strong>na</strong>pr. BITMAP, CURSOR, ICON,FONT...) a viacriadkové (<strong>na</strong>pr. MENU, DIALOG, RCDATA, STRINGTABLE...) príkazy. Viacriadkovépríkazy používajú <strong>na</strong> definovanie bloku dát príkazy BEGIN a END (pozri výpisresource script súboru).Aplikácie používajú v správach a z<strong>na</strong>kovom výstupe textové re azce. Windows po<strong>sk</strong>ytujetabu¾ky re azcov ako alter<strong>na</strong>tívu ku konvenènej metóde umiestòovania re azcov vprogramovom *.exe súbore. Textové re azce sú definované v súbore prostriedkov akaždý má priradenú hodnotu ID.STRINGTABLEBEGINIDS_STRING1 “Out of Memory“IDS_STRING2 “Out of Range“ENDHodnoty ID re azca môžete definova <strong>na</strong> zaèiatku resource súboru pomocou príkazu#define. Prípadne môžete použi externý súbor pre lepšiu preh¾adnos . Tento súbor potomvložíte do resource súboru pomocou príkazu #include. Keï potrebujete tieto re azce použi ,pomocou funkcie LoadString sa <strong>sk</strong>opírujú re azce zo súboru prostriedkov do vyrovnávacejpamäte. Re azce môžu obsahova aj riadiace z<strong>na</strong>ky, <strong>na</strong>pr. tabulátor, koniec riadka a pod.Výhodou používania tabu¾ky re azcov je redukcia používania pamäte. Re azce nezaberajúpamä , pokia¾ nie sú potrebné. Windows <strong>na</strong>hráva re azce po blokoch pod¾a ID. Re azce, priktorých je pravdepodobné, že budú používané spoloène, by mali by èíslované sekvenène vmalých <strong>sk</strong>upinách. Ïalšou výhodou umiestnenia re azcov do tabu¾ky re azcov je podpora viacerýchjazykov. Win32 API podporuje viacjazyèné prostriedky v jednej aplikácii. Totiž rov<strong>na</strong>kýprogramový súbor *.exe môže by bez zmeny distribuovaný v nieko¾kých krajinách.Použitie tabu¾ky re azcov stráca zmysel, pokia¾ sú re azce <strong>sk</strong>opírované do statickejvyrovnávacej pamäte. Vyrovnávacia pamä bude zabera miesto, aj keï nebude obsahovanijaké dáta. Aplikácia by mala <strong>na</strong>hráva re azce do zásobníkových premenných alebodo globálne alokovanej pamäte.Súbor prostriedkov môže by použitý aj pre iný typ statických dát. Tieto dáta sú definovanépomocou príkazu RCDATA.MyData RCDATABEGIN100x0234“Out of Memory““Out of Range“ENDsubor1 TEXT “config.ini“subor2 METAFILE “car.bmp“Najlepším miestom <strong>na</strong> uloženie dát vlastných prostriedkov je externý súbor. Riadkys príkazmi TEXT a METAFILE definujú vlastné prostriedky. Kompilátor prostriedkov èítaz týchto súborov a umiestòuje dáta do súboru prostriedkov vyko<strong>na</strong>te¾ného programu.Funkcie FindResource a FindResourceEx sa používajú <strong>na</strong> vyh¾adávanie dát vlastných prostriedkov.Funkcia LoadResource <strong>na</strong>hrá prostriedok do pamä ového bloku.Ïalším výz<strong>na</strong>mným prvkom resource súborov sú dialógové okná. Dialógové okná väèšinouvyžadujú od používate¾a zadanie vstupných dát pre nejakú špecifickú úlohu, <strong>na</strong>pr.vyh¾adanie re azca v textovom dokumente a pod. Dialógové okná používajú šablóny, ktorédefinujú ovládacie prvky v danom okne. Tieto šablóny sú definované v súbore prostriedkov*.rc pomocou príkazu DIALOG (pozri listing Simple resource <strong>na</strong> <strong>www</strong>.pcrevue.<strong>sk</strong>). Je ichmožné vytvára aj v pamäti dy<strong>na</strong>micky, poèas behu aplikácie. Skôr ako sa pustíme do opisuovládacích prvkov pre dialógové okná, potrebujete poz<strong>na</strong> štýly ovládacích prvkov.ŠTÝLY TLAÈIDIELBS_3STATE – Vytvára zaškrtávacie políèko s tromi stavmi výberu. Zaškrtávacie polemôže by buï nezaškrtnuté, zaškrtnuté, alebo tlmené (sivé). Tlmeným stavom sa vyjadrujestav, keï hodnota zaškrtávacieho políèka nie je stanovená.BS_AUTO3STATE – Rov<strong>na</strong>ké ako BS_3STATE, s výnimkou toho, že zaškrtávacie políèkomení svoj stav, keï ho používate¾ vyberie.BS_AUTOCHECKBOX – Rov<strong>na</strong>ké ako BS_CHECKBOX, s výnimkou toho, že zaškrtávaciepolíèko mení svoj stav, keï ho používate¾ vyberie.BS_AUTORADIOBUTTON – Rov<strong>na</strong>ké ako BS_RADIOBUTTON, s výnimkou toho, že prepí<strong>na</strong>èje vybraný, keï <strong>na</strong>ò používate¾ klikne a výber všetkých ostatných prepí<strong>na</strong>èov v <strong>sk</strong>upineje zrušený.BS_BITMAP – Vytvára tlaèidlo, ktoré zobrazí bitovú mapu.BS_BOTTOM – Umiestni titulok do spodnej èasti pravouholníka tlaèidla.BS_CENTER – Vycentruje titulok horizontálne v pravouholníku tlaèidla.BS_CHECKBOX – Vytvára zaškrtávacie políèko, ktoré má titulok zobrazený <strong>na</strong> pravejstrane, pokia¾ nie je použitý štýl BS_LEFT.BS_DEFPUSHBUTTON – Vytvára tlaèidlo, ktoré je stlaèené, keï používate¾ stlaèí klávesENTER.BS_GROUPBOX – Vytvára rám, ktorý má titulok zobrazený v ¾avom hornom rohu.Používa sa <strong>na</strong>jmä pri zo<strong>sk</strong>upovaní prvkov RADIOBUTTON, resp. CHECKBOX.BS_ICON – Vytvára tlaèidlo, ktoré bude zobrazova ikonu.BS_LEFT – Zarovná titulok v pravouholníku tlaèidla v¾avo. Ak je týmto tlaèidlom zaškrtávaciepolíèko alebo prepí<strong>na</strong>è a nemá štýl BS_RIGHTBUTTON, text je zarov<strong>na</strong>ný v¾avo <strong>na</strong>pravej strane.BS_LEFTTEXT – Umiestni text <strong>na</strong> ¾avú stranu prepí<strong>na</strong>èa alebo zaškrtávacieho políèka.BS_MONO – Urèuje, že tlaèidlo má pre titulok iba jeden riadok textu.BS_MULTILINE – Urèuje, že tlaèidlo má pre titulok viac riadkov textu. Pokia¾ je titulokpríliš dlhý a nevojde sa <strong>na</strong> jeden riadok, bude zalomený <strong>na</strong> druhý riadok.BS_NOTIFY – Posiela mater<strong>sk</strong>ému oknu správy s oznámením. Toto je prídavokk BN_CLICKED a BN_DBLCLK, ktoré sú posielané implicitne.BS_OWNERDRAW – Vytvára owner-drawn tlaèidlo. Mater<strong>sk</strong>é okno dostane správuWM_MEASUREITEM, keï je tlaèidlo vytvorené, a správu WM_DRAWITEM vždy, keï je potrebnétlaèidlo vyfarbi . Tento štýl by sa nemal kombinova so žiadnymi inými štýlmi tlaèidiel.BS_PUSHBUTTON – Vytvára tlaèidlo, ktoré, keï je vybrané, posiela mater<strong>sk</strong>ému oknusprávu WM_COMMAND.BS_PUSHLIKE – Prinúti zaškrtávacie políèko alebo prepí<strong>na</strong>è, aby mal vzh¾ad a akciu tlaèidla.BS_RADIOBUTTON – Vytvára prepí<strong>na</strong>è, ktorý má titulok zobrazený <strong>na</strong> pravej strane,pokia¾ nie je použitý štýl BS_LEFT.BS_RIGHTBUTTON – Umiestni oblas pre výber prepí<strong>na</strong>èa alebo zaškrtávacieho políèka<strong>na</strong> pravú stranu pravouholníka tlaèidla.BS_TEXT – Urèuje, že tlaèidlo zobrazuje text.BS_TOP – Umiestni titulok do hornej èasti pravouholníka tlaèidla.BS_VCENTER – Vertikálne vycentruje titulok v pravouholníku tlaèidla.ŠTÝLY POLÍ SO ZOZNAMOMCBS_ AUTOHSCROLL – Umožòuje horizontálne posúvanie v editovate¾nom ovládacomprvku po¾a so zoz<strong>na</strong>mom.CBS_DISABLENOSCROLL – Vynúti si, aby bol zobrazený vertikálny rolovací pruh ajvtedy, keï sú všetky položky zoz<strong>na</strong>mu vidite¾né. Ak nebude rolovací pruh <strong>na</strong> zobrazenievšetkých položiek potrebný, bude neaktívny. Normálne je rolovací pruh zobrazenýiba vtedy, keï je to potrebné.CBS_DROPDOWN – Vytvára roztváracie pole so zoz<strong>na</strong>mom. Zoz<strong>na</strong>m je zobrazený ibavtedy, keï sa vykonáva výber.CBS_DROPDOWNLIST – Vytvára pole s roztváracím zoz<strong>na</strong>mom. Editovanie nie je povolenéa vybera možno iba zo zobrazených položiek.CBS_HASSTRINGS – Používa sa pri owner-drawn poliach so zoz<strong>na</strong>mami <strong>na</strong> špecifikáciure azcov, ktoré budú k po¾u so zoz<strong>na</strong>mom pridané. Aplikácia môže potom použi <strong>na</strong>vyh¾adanie urèitej položky správu CB_GETLBTEXT.CBS_LOWERCASE – Vynúti si, aby boli do editovate¾ného ovládacieho prvku zadávanéiba malé písmená, a to tak, že pri zadávaní robí automatickú konverziu ve¾kých písmen<strong>na</strong> malé.CBS_NOINTEGRALHEIGHT – Vynúti si, aby malo pole so zoz<strong>na</strong>mom presne urèenúve¾kos . Windows implicitne <strong>na</strong>staví ve¾kos po¾a so zoz<strong>na</strong>mom tak, aby žiadne položkynemohli by zobrazené èiastoène.CBS_OEMCONVERT – Zadaný text bude prevedený zo z<strong>na</strong>kovej sady Windows do z<strong>na</strong>kovejsady OEM a potom spä do sady Windows. Tým sa zabezpeèí prevod pri použitífunkcie AnsiToOem.CBS_OWNERDRAWFIXED – Vytvára owner-drawn pole so zoz<strong>na</strong>mom. Rodiè dostanesprávu WM_MEASUREITEM, keï sa pole so zoz<strong>na</strong>mom vytvorí, a správu WM_DRAW-ITEM, keï je potrebné vyfarbi niektorú položku.10/2001 PC REVUE 131

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!