išteklių scenarijai (resource scripts)
DESCRIPTION
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?. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/1.jpg)
Išteklių scenarijai(resource scripts)
![Page 2: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/2.jpg)
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.
![Page 3: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/3.jpg)
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.)
![Page 4: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/4.jpg)
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
![Page 5: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/5.jpg)
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”.
![Page 6: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/6.jpg)
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ų?
![Page 7: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/7.jpg)
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ę.
![Page 8: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/8.jpg)
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
![Page 9: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/9.jpg)
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.
![Page 10: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/10.jpg)
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:
![Page 11: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/11.jpg)
• Antraštinis failas apibrėžiamas:
• Įkėlimas piktogramos iš vykdomojo failo žinant jo identifikatorių:
• Arba tą patį galime gauti panaudoję eilutės tipą:
![Page 12: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/12.jpg)
• 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ą.
![Page 13: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/13.jpg)
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.
![Page 14: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/14.jpg)
Pelės žymekliai
Pelės žymekliai apibrėžiami panašiai kaip ir piktogramų atveju ir įkeliami funkcijos LoadCursor pagalba.
![Page 15: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/15.jpg)
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.
![Page 16: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/16.jpg)
• 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į.
![Page 17: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/17.jpg)
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:
![Page 18: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/18.jpg)
Pavyzdžiai
Klavišų kombinacijos apibrėžiamos kaip simboliai arba virtualaus klavišo kodo reikšmė:
![Page 19: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/19.jpg)
VIRTKEY - virtualių klavišų kodo identifikatoriai
![Page 20: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/20.jpg)
Jei prieigos klaivišus susiesime su meniu komandomis, tuomet, paspaudus prieigos klavišą, išryškės meniu komanda. Nebent nurodytume raktažodį NOINVERT:
![Page 21: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/21.jpg)
LoadAccelerators
Norint įkelti prieigos klavišus, naudosimės funkcija LoadAccelerators:
![Page 22: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/22.jpg)
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:
![Page 23: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/23.jpg)
![Page 24: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/24.jpg)
• 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
![Page 25: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/25.jpg)
Meniu
![Page 26: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/26.jpg)
![Page 27: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/27.jpg)
Ampersendas (&)
![Page 28: Išteklių scenarijai (resource scripts)](https://reader036.vdocuments.pub/reader036/viewer/2022062308/56812b38550346895d8f478a/html5/thumbnails/28.jpg)
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