2× DVD - Vitajte na stránkach www.einsty.hostujem.sk

2× DVD - Vitajte na stránkach www.einsty.hostujem.sk 2× DVD - Vitajte na stránkach www.einsty.hostujem.sk

einsty.hostujem.sk
from einsty.hostujem.sk More from this publisher
10.07.2015 Views

P R O G R A M U J E M EDelphi v praxi / 10. èas: Práca so súbormi I.Táto èas sa bude nies v znamení práce so súbormi. Prog−ramovanie by nemalo význam, keby sa pri òom nevyuívalipamäové prostriedky poèítaèa. Program môe pracova vdvoch základných „reimoch“. Pri prvom vyuíva len pamäRAM, ktorá údaje uchová doèasne, teda dovtedy, kým je podmenovitým napätím, respektíve dovtedy, kým sa vyuívajúdáta òou naèítané. To je vyuite¾né jedine za chodu PC.Niekedy v nedávnej minulosti, vtedy, keï ešte nebol svetuukázaný prvý „moderný“ Personal Computer, sa vyuívalipráve takéto poèítaèe, ktorých pamä nebola schopná ucho−va dátovú stopu. To znamená asi to¾ko, e pred kadýmpouitím programu rôzneho druhu bolo potrebné ho„nahra“ do pamäte, a potom sa s ním dalo nieèo robi.Princíp sa od tých èias ve¾mi nezmenil. Poèítaèe dneškavyuívajú pamäové prostriedky vo forme RAM a pevnédisky, ktoré by sa dali nazva ved¾ajšou pamäou (ROM). Mysa nauèíme pouíva pevný disk v súvislosti s našimi apliká−ciami, programami, ktoré u spomínanú operaènú pamäaktívne vyuívajú. Áno, hovorím o èítaní, zápise, kopírovanía ostatných monostiach práce so súbormi.SÚBORY. Pojem súbor je moné principiálne pochopiako súhrn informácií uloených na urèitom fyzickom mieste– buï internej pamäte, teda pevného disku magnetickoudátovou stopou vo forme bitov, alebo na inom dátovommédiu, napríklad CD, diskete a podobne. Pre nás nie je pod−statný fyzický princíp, ale finálne monosti, ktoré konkrétnyoperaèný systém ponúka pri práci so súbormi. Preto si nieèopovieme o súboroch v spojení s programovaním v Delphi.Štruktúra programov pracujúcich výluène s diskom by malaspåòa nieko¾ko základných pravidiel. Prvým z nich je jedno−duchos zápisu, ktorá pozostáva z menej èastého otváraniaa zatvárania súboru a pouívania takzvaného fázového zá−pisu informácií. Program sa tým stáva rýchlejším a pru−nejším vo viacerých smeroch. Program by nemal obsahovanekoneèné cykly zápisu ani periodicky sa opakujúce proce−dúry, napríklad tvorené komponentom Ttime. Informáciezapisujeme výluène v tom danom okamihu, keï je to nevy−hnutné na ïalší bezchybný chod aplikácie. „Z rýchlika“ smeuviedli základné „súborové“ pravidlá. A teraz sa pusme dopráce s nimi. Na zaèiatok treba ukáza vytvorenie, respektíveotvorenie u existujúceho súboru. Ukáeme si rutiny, ktoré súvo všeobecnosti platné nielen pri pouití danej verzie Delphi,ale po malej zmene dokonca aj v „dosovskom“ Pascale.var f : file;.............AssignFile(f, Nazov_suboru );Príkazom AssignFile sme si zadefinovali súbor, ktorýchceme buï vytvori, alebo doò zapísa. O tom, akú uda−los sa chystáme vykona, rozhodujú dva základné príka−zy. Prvý príkaz reset (f, 1); nám hovorí, e súbor premen−nej f je otvorený a pripravený na prácu s ním. V prípade,ak súbor f neexistuje, je pri pouití takéhoto zápisu zob−razené chybové hlásenie File not Found. Zamedzi takétohlásenie je moné viacerými spôsobmi. Prvý spôsob spoèí−va v zistení, èi takýto súbor alebo adresár existuje.FileExists(FileName) : Boolean;Ak si prajeme neexistujúci súbor vytvori, vyuijeme prí−kaz rewrite(f, 1), ktorý súbor f vytvorí alebo v prípade jehoexistencie ho prepíše, teda zmae jeho pôvodný obsah.Potom je u súbor pripravený na zápis. Zápis do súborumôeme rozdeli do troch skupín: zápis premenných byte zápis premenných char zápis premenných stringZápis do súboru vo forme byte alebo po¾a byte (array[1..X] of byte) sa najèastejšie vyuíva pri zápise neštandard−ných znakov reprezentovaných èíslami 1 a 255. Ukáeme sizápis po¾a byte, kde predpokladáme, e v premennej wr jezapísaný „neznámy“ reazec. Premenná Nazov_suboru jenosite¾om reazca string, v našom prípade nosite¾om cesty kexistujúcemu súboru, urèenému na zápis.var f : file;wr : array [1..100] of byte;x : integer;Nazov_suboru : string;BeginAssignFile(f, Nazov_suboru);if FileExists(Nazov_suboru) then beginreset(f, 1);seek(f, 1);BlockWrite(f, wr, SizeOf(wr), x);CloseFile(f);if SizeOf(wr) = x then exit else showmessage(Write Error );end else showmessage(Nazov_suboru + neexistuje);end;Takto sme si prakticky ukázali zápis obsahu premennej wrdo súboru Nazov_suboru. Po pripravení súboru na zápis smenastavili pozíciu v súbore príkazom seek(f, 1); kde èíslo 1 jepozícia urèená na zaèiatok zápisu. Procedúra BlockWrite rea−lizujúca zápis vyuíva kninicu system. Prvý parameter, vnašom prípade premenná f, definuje, do akého súboru bude−me zapisova. Ïalší údaj, v našom prípade premenná wr,urèuje reazec byte, ktorý chceme zapísa. Predposledný údajprocedúry BlockWrite je hodnota (èíslo) udávajúca poèet baj−tov, ktoré sú urèené z premennej wr na zápis. Pouitím funk−cie SizeOf získavame celú dåku premennej wr. Posledný údajje viac−menej kontrolný. Hovorím o spätnej èasti procedúry,ktorá vracia po zápise skutoèný poèet zapísaných bajtov. Taksi jednoducho môeme skontrolova, èi náš zápis bol realizo−vaný správne a aplikovaný v plnej, teda elanej ve¾kosti. Prelepšie pochopenie je v uvedenom zápise podmienka, ktorásleduje ve¾kos po¾a byte a ve¾kos skutoène zapísaných baj−tov. Ak tento poèet nesedí, je vygenerované chybové hláse−nie. Uloenie premenných char alebo polí char (array [1..X] ofchar) je realizované rovnakým spôsobom ako v prípade byte,teda nemení sa ani jedna z èastí predchádzajúceho zápisuokrem premennej wr. Typ char je vlastne rozšírenoumonosou byte. To znamená, e tak ako do premennej bytesa dala zapísa hodnota ohranièená intervalom (1,255), taksa dá táto hodnota zapísa aj do po¾a char, buï pomocouznaku z klávesnice, alebo pomocou #byte. Napríklad v char#55 je rovná znaku ‘7’ a to sa rovná hodnote 55 v premen−nej byte. Na zápis reazca string môe by takisto pouitá táistá rutina, ktorá sa dá nahradi o nieèo jednoduchším spô−sobom.........reset(f);WriteLn(f, wr);........Predpokladajme, e wr je premennou typu string a fpredstavuje súbor pre zápis. Vtedy je moné realizova zápispomocou viacúèelového príkazu WriteLn. Samozrejme, boloby nelogické a hlavne neúsporné poui takýto zápis.Napríklad na uchovanie stavových velièín programu do inisúborov nám dokonale slúi u dávnejšie opisovaný kompo−nent IniFiles. Aj keï zápisy jednotlivých premenných (byte,char, string) sa z h¾adiska syntaxe od seba máloèím líšia, súvšetky typy prakticky vyuite¾né v jednotlivých prípadoch, ato pod¾a toho, aký reazec znakov potrebujeme do súboruuloi. V koneènom dôsledku hovoríme o jednom a tomistom zápise. Èítanie existujúcich súborov nie je o nièzloitejšie a kadý z vás si u urèite logicky vydedukoval jed−noducho pomenované príkazy, a to BlockRead a príkazReadLn. BlockRead je sèasti inverzným príkazom, ktorý dis−ponuje rovnakými monosami opaèného charakteru ako uspomínaný BlockWrite. A preto len struène.BlockRead(f, re, dlzka, x);f – súbor, z ktorého bude neznámy reazec èítaný; re –premenná, do ktorej bude preèítaná informácia o dåke dlzkauloená; x – je opä spätnou kontrolou, teda poèet preèíta−ných znakov (bajtov). Mazanie súborov je proces, kde sanepotrebný súbor, teda jeho obsah odstráni z fyzickéhomiesta pevného disku. Z programátorského h¾adiska ide opostup realizovate¾ný dvoma základnými spôsobmi. Prvým znich je otvorenie súboru premennou f a následným pouitímpríkazu erase(f);. Tento príkaz vyuíva základnú systémovúkninicu a do Delphi sa dostal spolu s viacerými upravenýmipríkazmi zo známeho Pascalu. Súbor pred zmazaním musímedefinova do premennej f , a to u spomenutým príkazomAssignFile. Preto sa v Delphi vytvorila pomerne vyuívanákninica sysutils (systémové prostriedky). Tá obsahuje aj opi−sovanú funkciu DeleteFile.if DeleteFile(Nazov_suboru) thenshowmessage( sœbor +Nazov_suboru+ vymazan )elseshowmessage( Sœbor +Nazov_suboru+ nebol odstrÆnen);Ako z uvedeného príkladu vyplýva, funkcia disponujemonosou výstupnej kontroly pomocou stavu boolean ovykonaní operácie, v našom prípade informácia o vymazanízadaného súboru v premennej Nazov_suboru. Základnéoperácie so súborom je moné aplikova aj ako „skåbeninu“dvoch, prípadne viacerých u známych funkcií a vytvára takiné, nové funkcie. Konkrétne naráam na vytvorenie rutiny,ktorej úlohou by bolo skopírova existujúci súbor z rôznehodiskového zariadenia na iné fyzické miesto, napríklad miestopevného disku. Kopírovanie súboru je síce moné realizovaaj spôsobom preèíta – zapísa, teda pomocou príkazovBlockRead a BlockWrite s prípadnou kontrolou správnostizápisu, ale preèo si komplikova ivot, keï podobnou, eštejednoduchšou funkciou je príkaz CopyFile.CopyFile(Nazov_suboru, Novy_subor, True);Kopírovanie by sme mali za sebou. Je len plusom preprogram pracujúci so súbormi, keï dokáe súbor preme−nova. V Delphi je na to jednoduchá funkcia RenameFile,ktorej èinnos má na svedomí u spomínaná kninica sys−utils. Tá na základe poiadaviek premenuje súbor, tak akozadefinujeme vstupné parametre funkcie. Opä sa stretá−vame so spätnou kontrolou typu boolean, ktorá, ako sazdá, je štandardom pri funkciách podobného charakteru.RenameFile(Nazov_suboru, Nove_meno);K súborom bezpochyby patrí aj existencia adresárov,deliacich jednotlivé skupiny súborov, prípadne programovalebo iných dokumentov uloených na pevnom disku.Adresáre je moné vytvára, presúva, ako aj maza. Terazsi ukáeme iba vytváranie adresárov. Vytváranie adresárovje takisto z dielne kninice sysutils „vymyslená“ šikovnáfunkcia. Má len jednu nevýhodu. Funkcia je schopná vy−tvori len jeden adresár, èím sa nedá jedným pouitím vjednom riadku vytvori stromová štruktúra adresárov.CreateDir( C:\DELPHI\ );Tento nedostatok nie je doriešený ani pri pouití príka−zu mkdir. Ja som tento problém riešil vlastnou funkciou,ktorá mi takpovediac u¾ahèila ivot. Pomenoval som juMkNDir, èo znamená (Make Next Directory) (listing nájde−te na našej webovej stránke www.pcrevue.sk).Bohuia¾, aj táto rutina má jedno obmedzenie týkajúcesa dåky reazca string, take neodporúèam pouíva dlhénázvy adresárov a podarí sa vám ich vytvori naozaj dos.Problém som riešil neodborne a u vôbec nie s pouitímzázraèných assemblerovských rutín, ale úplne laicky, s po−uitím toho, èo máme v štandardnej výbave Delphi. Pod−stata je vo vyh¾adávaní znaku ‘\’. Ak ho nájde a nepatrí kdiskovému smeru, vtedy vytvorí adresár. Keïe je všetkozapísané v cykle, dosahujeme samostatne sa vytvárajúceadresáre.NABUDÚCE. Táto téma sa nedá ani povrchne opísav jednej èasti, a preto sa òou naïalej budeme zaobera.Prejdeme toti k zaujímavejším funkciám a procedúram,ktoré vás urèite vo vašej programátorskej praxi potešia.Teším sa na ïalšie stretnutie, o mesiac dovidenia.Jozef Kozák ml.1/2002 PC REVUE 103

P R O G R A M U J E M EAssembler pod Windows13. èas: Funkcie na prácu s dialógovým oknomNovinky zo sveta Assemblera Firma Borland uvo¾nila program Turbo Debugger Version 5.5. Tento nástroj vám môevýrazne pomôc pri h¾adaní chýb v kóde. Ve¾kos súboru je asi 650 KB, stiahnu si homôete na adrese http://www.borland.com/bcppbuilder/turbodebugger/turbodebug55steps.html. Ïalšou novinkou je stránka http://www.movsd.com/, kde nájdete rôzne návody, nástro−je a zdrojové kódy.CheckDlgButtonWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia sa pouíva pri ovládacom prvku typu checkbox na vkladanie a odstraòovanieznaèky zaškrtnutia.Syntax: BOOL CheckDlgButton, HWND hwndDlg, int idButton, UINT uCheckHWND hwndDlg: Handle dialógového okna, ktoré obsahuje ovládací prvok.int idButton: Identifikátor ovládacieho prvku typu checkbox, ktorý sa má modifikova.UINT uCheck: Stav zaškrtnutia prepínaèa. Ak je tento parameter nenulový, funkcia pre−pínaè zaškrtáva. Keï je tento parameter nula, funkcia zaškrtnutie prepínaèa odstraòuje.Pre 3−stavové zaškrtávacie pole platí, e pokia¾ je uCheck 2 [BST_INDETERMINATE] – pre−pínaè je sivý, keï je uCheck 1 [BST_CHECKED] – prepínaè je zaškrtnutý a v prípade, eje uCheck 0 [BST_UNCHECKED] – zaškrtnutie je odstránené.MESSAGE: BM_SETCHECKVýsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE. V inýchprípadoch sa vráti hodnota FALSE. Na získanie rozšírenej informácie o chybe môete po−ui funkciu GetLastError.CheckRadioButtonWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incOvládacie prvky RadioButton sa pouívajú v skupinách, aby ukazovali výber zo skupinyvzájomne sa vyluèujúcich moností. Funkcia zaškrtáva znaèku zaškrtnutia k danému pre−pínaèu v skupine a odstraòuje znaèku zaškrtnutia zo všetkých ostatných prepínaèov v da−nej skupine.Syntax: BOOL CheckRadioButton, HWND hwndDlg, int idFirstButton, int idLastButton,int idCheckButtonHWND hwndDlg: Handle dialógového okna, ktoré obsahuje ovládací prvok.int idFirstButton: Identifikátor prvého prepínaèa v skupine.int idLastButton: Identifikátor posledného prepínaèa v skupine.int idCheckButton: Identifikátor prepínaèa, ktorý sa má vybra.MESSAGE: BM_SETCHECKVýsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE. V ostat−ných prípadoch sa vráti hodnota FALSE. Na získanie rozšírenej informácie o chybe môetepoui funkciu GetLastError.CreateDialogParamWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia vytvára nemodálne dialógové okno z resource súboru, v ktorom je definovanépríkazom šablóny dialógového okna – DIALOG. Dôleitým parametrom v šablóne dialó−gového okna je štýl WS_VISIBLE. Pokia¾ nie je tento štýl zadaný, bude potrebné nemodál−ne dialógové okno zobrazi pomocou funkcie ShowWindow. Funkcia CreateDialog−Param okamite vráti handle vytvoreného dialógového okna. CreateDialogParam v po−rovnaní s funkciou CreateDialog obsahuje navyše jeden parameter. Tento parameterumoòuje, aby bola pri spustení odovzdaná funkcii dialógového okna 32−bitová hodnota(napr. handle do pamäte).Syntax: HWND CreateDialogParam HINSTANCE hInstance, LPCTSTR lpTemplateName,HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParamHINSTANCE hInstance: Handle inštancie modulu získate pomocou funkcie GetModu−leHandle.LPCTSTR lpTemplateName: Ukazovate¾ na znakový reazec obsahujúci názov šablónydialógového okna v resource súbore.HWND hWndParent: Handle materského okna.DLGPROC lpDialogFunc: Ukazovate¾ na procedúru dialógového okna. Procedúra dialó−gového okna spracúva správy pre dialógové okno.LPARAM dwInitParam: 32−bitová hodnota odovzdaná funkcii DlgProc v správeWM_INITDIALOG ako hodnota lParam.MESSAGE: WM_INITDIALOGVýsledok funkcie: HWND: Po úspešnom vykonaní funkcie sa vráti handle dialógovéhookna. V ostatných prípadoch sa vráti hodnota NULL.GetDlgItemWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia vyh¾adá handle ovládacieho prvku v danom dialógovom okne.Syntax: HWND GetDlgItem, HWND hDlg, int nIDDlgItemHWND hDlg: Handle dialógového okna, ktoré obsahuje zadaný ovládací prvok.int nIDDlgItem: Identifikátor ovládacieho prvku, ktorého handle sa má získa.Výsledok funkcie: HWND: Po úspešnom vykonaní funkcie sa vráti handle daného ovlá−dacieho prvku. V ostatných prípadoch sa vráti hodnota NULL.GetDlgItemIntWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia naèíta hodnotu typu integer z ovládacieho prvku v dialógovom okne. Táto funk−cia je ekvivalentom pouitia správy WM_GETTEXT. Textové znaky v editovate¾nom ovlá−dacom prvku sú prevedené na hodnotu integer, poèínajúc znakom, ktorý je úplne v¾avo.Prvý nenumerický znak proces èítania zastaví.Syntax: UINT GetDlgItemInt, HWND hDlg, int nIDDlgItem, BOOL *lpTranslated, BOOLbSignedHWND hDlg: Handle dialógového okna.int nIDDlgItem: Identifikátor editovate¾ného ovládacieho prvku.BOOL *lpTranslated: Ukazovate¾ na premennú typu BOOL. Je nastavený na TRUE, ak bolobsah editovate¾ného po¾a riadne prevedený na typ integer. V prípade, e došlo k chybe,je nastavený na FALSE.BOOL bSigned: Je TRUE, ak má by hodnota, ktorá sa má naèíta, typu integer so zna−mienkom. Bez znamienka FALSE.MESSAGE: WM_GETTEXTVýsledok funkcie: UINT: Po úspešnom vykonaní funkcie sa vráti integer hodnota textu veditovate¾nom ovládacom prvku. Keïe nula je platnou návratovou hodnotou, na ziste−nie chyby pouívajte parameter lpTranslated. Ak je bSigned nastavený na TRUE, apliká−cia by mala návratovú hodnotu previes na integer so znamienkom.GetDlgItemTextWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia vyh¾adá titulok alebo text zviazaný s ovládacím prvkom v dialógovom okne.Syntax: UINT GetDlgItemText, HWND hDlg, int nIDDlgItem, LPTSTR lpString, int nMax−CountHWND hDlg: Handle dialógového okna.int nIDDlgItem: Identifikátor ovládacieho prvku.LPTSTR lpString: Ukazovate¾ na vyrovnávaciu pamä, do ktorej sa vloí získaný text alebotitulok.104 PC REVUE 1/2002

P R O G R A M U J E M EAssembler pod Windows13. èas: Funkcie <strong>na</strong> prácu s dialógovým oknomNovinky zo sveta Assemblera Firma Borland uvo¾nila program Turbo Debugger Version 5.5. Tento nástroj vám môevýrazne pomôc pri h¾adaní chýb v kóde. Ve¾kos súboru je asi 650 KB, stiahnu si homôete <strong>na</strong> adrese http://<strong>www</strong>.borland.com/bcppbuilder/turbodebugger/turbodebug55steps.html. Ïalšou novinkou je stránka http://<strong>www</strong>.movsd.com/, kde nájdete rôzne návody, nástro−je a zdrojové kódy.CheckDlgButtonWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia sa pouíva pri ovládacom prvku typu checkbox <strong>na</strong> vkladanie a odstraòovaniez<strong>na</strong>èky zaškrtnutia.Syntax: BOOL CheckDlgButton, HWND hwndDlg, int idButton, UINT uCheckHWND hwndDlg: Handle dialógového ok<strong>na</strong>, ktoré obsahuje ovládací prvok.int idButton: Identifikátor ovládacieho prvku typu checkbox, ktorý sa má modifikova.UINT uCheck: Stav zaškrtnutia prepí<strong>na</strong>èa. Ak je tento parameter nenulový, funkcia pre−pí<strong>na</strong>è zaškrtáva. Keï je tento parameter nula, funkcia zaškrtnutie prepí<strong>na</strong>èa odstraòuje.Pre 3−stavové zaškrtávacie pole platí, e pokia¾ je uCheck 2 [BST_INDETERMINATE] – pre−pí<strong>na</strong>è je sivý, keï je uCheck 1 [BST_CHECKED] – prepí<strong>na</strong>è je zaškrtnutý a v prípade, eje uCheck 0 [BST_UNCHECKED] – zaškrtnutie je odstránené.MESSAGE: BM_SETCHECKVýsledok funkcie: BOOL: Po úspešnom vyko<strong>na</strong>ní funkcie sa vráti hodnota TRUE. V inýchprípadoch sa vráti hodnota FALSE. Na zí<strong>sk</strong>anie rozšírenej informácie o chybe môete po−ui funkciu GetLastError.CheckRadioButtonWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incOvládacie prvky RadioButton sa pouívajú v <strong>sk</strong>upinách, aby ukazovali výber zo <strong>sk</strong>upinyvzájomne sa vyluèujúcich moností. Funkcia zaškrtáva z<strong>na</strong>èku zaškrtnutia k danému pre−pí<strong>na</strong>èu v <strong>sk</strong>upine a odstraòuje z<strong>na</strong>èku zaškrtnutia zo všetkých ostatných prepí<strong>na</strong>èov v da−nej <strong>sk</strong>upine.Syntax: BOOL CheckRadioButton, HWND hwndDlg, int idFirstButton, int idLastButton,int idCheckButtonHWND hwndDlg: Handle dialógového ok<strong>na</strong>, ktoré obsahuje ovládací prvok.int idFirstButton: Identifikátor prvého prepí<strong>na</strong>èa v <strong>sk</strong>upine.int idLastButton: Identifikátor posledného prepí<strong>na</strong>èa v <strong>sk</strong>upine.int idCheckButton: Identifikátor prepí<strong>na</strong>èa, ktorý sa má vybra.MESSAGE: BM_SETCHECKVýsledok funkcie: BOOL: Po úspešnom vyko<strong>na</strong>ní funkcie sa vráti hodnota TRUE. V ostat−ných prípadoch sa vráti hodnota FALSE. Na zí<strong>sk</strong>anie rozšírenej informácie o chybe môetepoui funkciu GetLastError.CreateDialogParamWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia vytvára nemodálne dialógové okno z resource súboru, v ktorom je definovanépríkazom šablóny dialógového ok<strong>na</strong> – DIALOG. Dôleitým parametrom v šablóne dialó−gového ok<strong>na</strong> je štýl WS_VISIBLE. Pokia¾ nie je tento štýl zadaný, bude potrebné nemodál−ne dialógové okno zobrazi pomocou funkcie ShowWindow. Funkcia CreateDialog−Param okamite vráti handle vytvoreného dialógového ok<strong>na</strong>. CreateDialogParam v po−rov<strong>na</strong>ní s funkciou CreateDialog obsahuje <strong>na</strong>vyše jeden parameter. Tento parameterumoòuje, aby bola pri spustení odovzdaná funkcii dialógového ok<strong>na</strong> 32−bitová hodnota(<strong>na</strong>pr. handle do pamäte).Syntax: HWND CreateDialogParam HINSTANCE hInstance, LPCTSTR lpTemplateName,HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParamHINSTANCE hInstance: Handle inštancie modulu zí<strong>sk</strong>ate pomocou funkcie GetModu−leHandle.LPCTSTR lpTemplateName: Ukazovate¾ <strong>na</strong> z<strong>na</strong>kový reazec obsahujúci názov šablónydialógového ok<strong>na</strong> v resource súbore.HWND hWndParent: Handle mater<strong>sk</strong>ého ok<strong>na</strong>.DLGPROC lpDialogFunc: Ukazovate¾ <strong>na</strong> procedúru dialógového ok<strong>na</strong>. Procedúra dialó−gového ok<strong>na</strong> spracúva správy pre dialógové okno.LPARAM dwInitParam: 32−bitová hodnota odovzdaná funkcii DlgProc v správeWM_INITDIALOG ako hodnota lParam.MESSAGE: WM_INITDIALOGVýsledok funkcie: HWND: Po úspešnom vyko<strong>na</strong>ní funkcie sa vráti handle dialógovéhook<strong>na</strong>. V ostatných prípadoch sa vráti hodnota NULL.GetDlgItemWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia vyh¾adá handle ovládacieho prvku v danom dialógovom okne.Syntax: HWND GetDlgItem, HWND hDlg, int nIDDlgItemHWND hDlg: Handle dialógového ok<strong>na</strong>, ktoré obsahuje zadaný ovládací prvok.int nIDDlgItem: Identifikátor ovládacieho prvku, ktorého handle sa má zí<strong>sk</strong>a.Výsledok funkcie: HWND: Po úspešnom vyko<strong>na</strong>ní funkcie sa vráti handle daného ovlá−dacieho prvku. V ostatných prípadoch sa vráti hodnota NULL.GetDlgItemIntWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia <strong>na</strong>èíta hodnotu typu integer z ovládacieho prvku v dialógovom okne. Táto funk−cia je ekvivalentom pouitia správy WM_GETTEXT. Textové z<strong>na</strong>ky v editovate¾nom ovlá−dacom prvku sú prevedené <strong>na</strong> hodnotu integer, poèí<strong>na</strong>júc z<strong>na</strong>kom, ktorý je úplne v¾avo.Prvý nenumerický z<strong>na</strong>k proces èítania zastaví.Syntax: UINT GetDlgItemInt, HWND hDlg, int nIDDlgItem, BOOL *lpTranslated, BOOLbSignedHWND hDlg: Handle dialógového ok<strong>na</strong>.int nIDDlgItem: Identifikátor editovate¾ného ovládacieho prvku.BOOL *lpTranslated: Ukazovate¾ <strong>na</strong> premennú typu BOOL. Je <strong>na</strong>stavený <strong>na</strong> TRUE, ak bolobsah editovate¾ného po¾a riadne prevedený <strong>na</strong> typ integer. V prípade, e došlo k chybe,je <strong>na</strong>stavený <strong>na</strong> FALSE.BOOL bSigned: Je TRUE, ak má by hodnota, ktorá sa má <strong>na</strong>èíta, typu integer so z<strong>na</strong>−mienkom. Bez z<strong>na</strong>mienka FALSE.MESSAGE: WM_GETTEXTVýsledok funkcie: UINT: Po úspešnom vyko<strong>na</strong>ní funkcie sa vráti integer hodnota textu veditovate¾nom ovládacom prvku. Keïe nula je platnou návratovou hodnotou, <strong>na</strong> ziste−nie chyby pouívajte parameter lpTranslated. Ak je bSigned <strong>na</strong>stavený <strong>na</strong> TRUE, apliká−cia by mala návratovú hodnotu previes <strong>na</strong> integer so z<strong>na</strong>mienkom.GetDlgItemTextWindows NT Win 95 Win32s Lib IncludeÁno Áno Áno user32.lib user32.incFunkcia vyh¾adá titulok alebo text zviazaný s ovládacím prvkom v dialógovom okne.Syntax: UINT GetDlgItemText, HWND hDlg, int nIDDlgItem, LPTSTR lpString, int nMax−CountHWND hDlg: Handle dialógového ok<strong>na</strong>.int nIDDlgItem: Identifikátor ovládacieho prvku.LPTSTR lpString: Ukazovate¾ <strong>na</strong> vyrovnávaciu pamä, do ktorej sa vloí zí<strong>sk</strong>aný text alebotitulok.104 PC REVUE 1/2002

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

Saved successfully!

Ooh no, something went wrong!