išteklių scenarijai (resource scripts)

Post on 30-Dec-2015

35 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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?

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

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

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”.

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ų?

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ę.

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

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.

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:

• Antraštinis failas apibrėžiamas:

• Įkėlimas piktogramos iš vykdomojo failo žinant jo identifikatorių:

• Arba tą patį galime gauti panaudoję eilutės tipą:

• 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ą.

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.

Pelės žymekliai

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

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.

• 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į.

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:

Pavyzdžiai

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

VIRTKEY - virtualių klavišų kodo identifikatoriai

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

LoadAccelerators

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

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:

• 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

Meniu

Ampersendas (&)

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

top related