1 / 28

Išteklių scenarijai (resource scripts)

Išteklių scenarijai (resource scripts). rc.exe. Windows SDK turi specialų įrankį – rc.exe, išteklių scenarijų kompiliatorių (resource script compiler). Tai galinga programavimo Windows dalis, kurią geras programuotojas turėtų išmanyti ir naudoti. Kas tai yra?.

zahir-horne
Download Presentation

Išteklių scenarijai (resource scripts)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Išteklių scenarijai(resource scripts)

  2. rc.exe • Windows SDK turi specialų įrankį – rc.exe, išteklių scenarijų kompiliatorių (resource script compiler). • Tai galinga programavimo Windows dalis, kurią geras programuotojas turėtų išmanyti ir naudoti.

  3. Kas tai yra? Tai failas, talpinantis GVS (GUI) duomenis, ir, kai sukompiliuotas, gali būti susietas su programa. Tuomet programa gali pasinaudoti duomenimis saugomais scenarijuje. (Pvz.: versija, piktograma ir pan.)

  4. Išteklių tipai • Išskleidžiamasis meniu (drop-down menu) • Iškylantis meniu (popup menu) • Tekstinės eilutės • Spartieji klavišai (keyboard accelerators) • Piktogramos (icons) • Rastriniai paveikslai (bitmap images) • Dialogo langai (dialog boxes) • Versijos informacija • Pelės kursoriai

  5. Kuriant scenarijus... • Scenarijų rašymo sintaksė yra labai panaši į C. Pavyzdžiui, scenarijų kompiliatorius naudoja standartinį C parengiamąją doroklę (preprocessor). Svarbu atkreipti į tai dėmesį, nes reikia įtraukti <afxres.h> antraštinį failą į scenarijų. • Kadangi scenarijuose galima rašyti makro komandas, labai dažnai programuotojai saugo susijusias makro komandas antraštiniame faile “resource.h”.

  6. Naudojant scenarijus... • Kai scenarijus yra išsaugomas vykdomajame faile, egzistuoja keli būdai juo pasinaudoti. Pavyzdžiui, norint kreiptis į eilutę, naudosimės LoadString funkcija, atitinkamai kreipiantis į piktogramą –LoadIcon. • Tam, kad galėtumėt kreiptis į scenarijų, reikia žinoti vykdomojo failo identifikatorių (instance handle). Kas būtų, jei gautume kito vykdomojo failo identifikatorių?

  7. MAKEINTRESOURCE • Dirbant su scenarijais šis raktinis žodis yra labai svarbus. Kaip jis veikia? • Ištekliai saugomi su vardu, kuris gali būti tiek eilutė, tiek skaitinis identifikatorius. Skaitiniu atveju, skaičius negali būti didesnis nei 16 bitų, bet į išteklius tai kreipiamasi vardu – unikodine eilute... Tam, kad skaitinis identifikatorius nebūtų sumaišytas su eilute, yra perduodama makrokomanda MAKEINTRESOURCE, kuri pakeičia skaičių į atitinkamą eilutę.

  8. Išteklių identifikatoriai • IDS – eilutės tipo • IDM – meniu • IDC – komandos • IDD – dialogo lango • IDA – prieigos klavišų lentelės • IDI – piktogramos arba rastrinio vaizdo • IDB – rastrinio vaizdo • ID – nežinomo tipo

  9. DISCARDABLE • Ištekliai yra įkeliami į atmintį dirbant programai. Tačiau programa gali jų nenaudoti kurį laiką, todėl būtų prasminga juos (arba jų dalį) pašalinti iš atminties. Tam tikslui yra naudojamas raktažodis DISCARDABLE apibrėžiant išteklių. • Šis raktažodis 32 bitų Windows sistemose yra ignoruojamas, bet likęs suderinamumo tikslais.

  10. Piktogramos • Piktogramos gali būti saugomos išteklių faile naudojant raktažodį ICON: • Programos vykdomasis failas bus rodomas su pirmąja piktograma, jei jų yra keletas:

  11. Antraštinis failas apibrėžiamas: • Įkėlimas piktogramos iš vykdomojo failo žinant jo identifikatorių: • Arba tą patį galime gauti panaudoję eilutės tipą:

  12. WNDCLASSEX turi dviejų piktogramų identifikatorius: didelės ir mažos. Mažą piktogramą sudaro 16 taškų kvadratas, didelę – 32. Jei nėra pateiktas mažos piktogramos identifikatorius – didelė piktograma yra sumažinama. • Jei funkcijai yra perduodamas objekto identifikatorius NULL, Windows’ai grąžins numatytąją piktogramą.

  13. Rastriniai paveikslėliai (bitmaps) • Rastriniai paveikslėliai gali būti iškviečiami taip pat kaip ir piktogramos: • Kadangi “bitmapai” yra dideli, Windows’ai gali grąžinti NULL reikšmę. • Taip pat juos reikia pašalinti iš atminties perduodant identifikatorių funkcijai DestroyObject.

  14. Pelės žymekliai Pelės žymekliai apibrėžiami panašiai kaip ir piktogramų atveju ir įkeliami funkcijos LoadCursor pagalba.

  15. Simbolių eilučių lentelės • Simbolių eilutės gali būti aprašomos taip: • Pastebėsime, kad galima naudoti ir BEGIN END vietoje { }. Kompiliatoriui tai neturi jokios reikšmės.

  16. Lentelė įkeliama funkcijos LoadString pagalba: • hInst – bibliotekos, talpinančios eilutę, identifikatorius • uID – simbolių eilutės identifikatorius • lpBuffer – simbolių masyvo kintamasis, kuris įgis eilutės reikšmę • nBufferMax – nurodo, kiek simbolių gali būti įkelta Pati funkcija grąžina nuskaitytų simbolių kiekį.

  17. Prieigos klavišai (accelerators) Prieigos klavišai yra įprasta beveik visų taikomųjų programų dalis, todėl jų sukūrimas scenarijuose yra gera idėja. Priegos klavišų lentelė atrodo taip:

  18. Pavyzdžiai Klavišų kombinacijos apibrėžiamos kaip simboliai arba virtualaus klavišo kodo reikšmė:

  19. VIRTKEY - virtualių klavišų kodo identifikatoriai

  20. Jei prieigos klaivišus susiesime su meniu komandomis, tuomet, paspaudus prieigos klavišą, išryškės meniu komanda. Nebent nurodytume raktažodį NOINVERT:

  21. LoadAccelerators Norint įkelti prieigos klavišus, naudosimės funkcija LoadAccelerators:

  22. TranslateAccelerator Tam, kad programa “suprastų” priegos klavišų reikšmes, reikia pakeisti pranešimų ciklą. Jame panaudosime TranslateAccelerator funkciją, pakeičiančią klavišų reikšmes atitinkamais komandiniais pranešimais:

  23. Tuo atveju, kai rašoma daugelio dokumentų sąsajos (MDI) programa, reikia taip pat reaguoti į polangių prieigos klavišus. Tam naudosimės TranslateMDISysAccel funkcija: • hwndFrame – programos lango ID • hwndClient – MDI programos lango ID

  24. Meniu

  25. Ampersendas (&)

  26. Versijos informacija ir dialogai • Versijos informacija saugoma išteklių faile. • Dialogo lango pavyzdys: • Jei dialogo langas nėra susiejamas su klase, tuomet laukas CLASS nėra užpildomas

More Related