28
Išteklių scenarijai (resource scripts)

Išteklių scenarijai (resource scripts)

Embed Size (px)

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 Presentation

Citation preview

Page 1: Išteklių scenarijai (resource scripts)

Išteklių scenarijai(resource scripts)

Page 2: 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.

Page 3: Išteklių scenarijai (resource scripts)

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)

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)

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)

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)

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)

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)

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)

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)

• 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)

• 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)

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)

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)

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)

• 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)

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)

Pavyzdžiai

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

Page 19: Išteklių scenarijai (resource scripts)

VIRTKEY - virtualių klavišų kodo identifikatoriai

Page 20: Išteklių scenarijai (resource scripts)

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)

LoadAccelerators

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

Page 22: Išteklių scenarijai (resource scripts)

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)
Page 24: Išteklių scenarijai (resource scripts)

• 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)

Meniu

Page 26: Išteklių scenarijai (resource scripts)
Page 27: Išteklių scenarijai (resource scripts)

Ampersendas (&)

Page 28: Išteklių scenarijai (resource scripts)

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