duomenų tipai
DESCRIPTION
Duomenų tipai. Parengė: Monika Makusaitė. Vengriškasis užrašymo būdas. Win32 API naudoja vengriškąjį užrašymo būdą. Tai reiškia, kad kintamojo vardas turės priešdėlį, nurodantį jo duomenų tipą. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/1.jpg)
Duomenų tipaiParengė: Monika Makusaitė
![Page 2: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/2.jpg)
Vengriškasis užrašymo būdas
Win32 API naudoja vengriškąjį užrašymo būdą. Tai reiškia, kad kintamojo vardas turės priešdėlį,
nurodantį jo duomenų tipą.
Pavyzdžiui, raidė “p” nurodo, kad kintamasis yra rodyklė (pointer), “lp” - “ilgoji” rodyklė (long pointer),
kuri 32 bitų sistemoje yra ta pati rodyklė. Tai yra senųjų 16 bitų sistemų palikimas.
![Page 3: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/3.jpg)
QWORD, DWORD, WORD, BYTE
Tipas QWORD DWORD WORD BYTE
Ilgis 64 bitų ilgio be ženklo
32 bitų be ženklo
(unsigned)
16 bitų be ženklo
(unsigned)
8 bitų
Programoje aprašoma
typedef unsigned __int64
QWORD;
typedef unsigned
long DWORD;
typedef unsigned
short WORD;
typedef unsigned
char BYTE;
![Page 4: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/4.jpg)
Pavyzdys:
#include <stdint.h>
typedef uint8_t BYTE;typedef uint16_t WORD;typedef uint32_t DWORD;
typedef uint64_t QWORD;
![Page 5: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/5.jpg)
BOOL, BOOLEAN
Tipas BOOL BOOLEAN
Reikšmė (TRUE arba FALSE) (TRUE arba FALSE)
Programoje aprašoma typedef int BOOL; typedef byte BOOLEAN;
![Page 6: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/6.jpg)
LONG, INT, SHORT, CHAR
Tipas LONG INT SHORT CHAR
Apibrėžtis 32 bitų su ženklu;
32 bitų su ženklu;
16 bitų ilgio su sveikais skaičiais;
8 bitų ilgio;
Programoje aprašoma
typedef long LONG;
typedef int INT; typedef short SHORT;
typedef char CHAR;
![Page 7: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/7.jpg)
LONG žymėjimas
LONG kintamieji paprastai priešdėliu su "l" (mažosiomis L).
UINT žymėjimas
UINT kintamieji paprastai su priešdėliu "I" arba "ui„
CHAR, UCHAR žymėjimas
Šie kintamieji paprastai būna su prefiksu "c" arba "uc".
Jei kintamojo dydis nesvarbus, galite naudoti kai kuriuos iš šių sveikųjų tipų. Tačiau, jei norite tiksliai nurodyti kintamojo dydį, jei jis turi tam tikrą bitų skaičių, naudokite BYTE, WORD, DWORD arba QWORD identifikatorius, nes jų ilgis yra nepriklausomas nuo platformos ir niekada nesikeičia.
![Page 8: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/8.jpg)
Kitų INT ir LONG tipų pavyzdžiai..
INT32 32 bitų su ženklu
INT64 64 bitų su ženklu
LONG32 32 bitų su ženklu
LONG64 64 bitų su ženklu
LONGLONG 64 bitų su ženklu
![Page 9: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/9.jpg)
Pavyzdys:
typedef long LONG; typedef unsigned long ULONG; typedef int INT; typedef unsigned int UINT; typedef short SHORT; typedef unsigned short USHORT; typedef char CHAR;
typedef unsigned char UCHAR;
![Page 10: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/10.jpg)
Žymėjimas
LONG – žymimi “l” UNIT – žymimi “i” arba “ui” CHAR, UCHAR – žymimi “c” arba “uc”
![Page 11: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/11.jpg)
STR, LPSTR
STR – simbolių eilutės su išskirta atmintimi. Žymima “sz” – simbolių eilutė užbaigta “0” (zero-terminated string)
LPSTR – rodyklė į simbolių eilutę. Žymima “lpsz”. “sz” yra svarbi žymė, nes kai kurios eilutės nėra užbaigiamos “0”.
LPSTR iš esmės yra aprašomas taip:
#define STR * LPSTR;
![Page 12: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/12.jpg)
TCHAR
TCHAR – daugybinis simbolinis duomenų tipas. Jis gali saugoti arba 1-o baito ASCII simbolį, arba 2-jų baitų Unicode simbolį.
#ifdef UNICODE #define TCHAR WORD #else #define TCHAR BYTE
#endif
![Page 13: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/13.jpg)
TSTR, LPTSTR
TSTR – yra TCHAR simbolių eilutė LPTSTR – yra rodyklė į TSTR tipą.
#define TCHAR * LPTSTR
![Page 14: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/14.jpg)
LPVOID
Rodyklė į nežinomo tipo objektą. ANSI-C standartas leidžia apsibrėžti daugybines rodykles kaip “void*” tipą.
Win32 API funkcijos gali turėti argumentus paženklintus kaip “LPVOID reserved”. Niekada nenaudokite šio tipo duomenų programoje, nes jie yra arba priklausomi nuo dar nerealizuoto funkcionalumo, arba naudojami specifinėse programose. Šiam parametrui perduokite NULL reikšmę.
![Page 15: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/15.jpg)
VOID, LPCVOID, LPVOID, PVOID
Tipas VOID LPCVOID LPVOID PVOID
Reikšmė Visi objektai; Rodyklė į bet kokio objekto konstantą .
Rodyklė į nežinomo tipo objektą.
Rodyklė į nežinomo tipo objektą.
![Page 16: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/16.jpg)
Rodyklės
Dauguma duomenų tipų turi rodykles.
Prie tipo būna *, tai reiškia, kad yra rodyklė.Pvz.:
PBOOL typedef BOOL *PBOOL;
PBOOLEAN typedef BOOLEAN *PBOOLEAN;
PDWORD typedef DWORD *PDWORD;
PINT typedef int *PINT;
![Page 17: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/17.jpg)
Handles(rankenėlės)
Savo branduolyje Windows’ai saugo lentelę visų skirtingų objektų už kuriuos yra atsakingi. Langai, mygtukai,
ikonos ir t.t., kiekvienas toks įrašas saugomas lentelėje yra susiejamas su identifikatoriumi, kuris vadinamas
HANDLE. Šis identifikatorius yra apibrėžiamas kaip 32 bitų įrašas be ženklo antraštėje <windows.h> ir
dažniausiai žymimas “h”.
![Page 18: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/18.jpg)
HWND
Šie tipai iš esmės taip pat yra “rankenėlės”. HWND – langų identifikatoriai skirti sekti
objektams rodomiems ekrane. Komunikavimui su konkrečiu langu reikia turėti to lango identifikatoriaus kopiją. Dažniausiai žymimas “hwnd”.
Programoje aprašomas:
typedef HANDLE HWND;
![Page 19: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/19.jpg)
HINSTANCE
HINSTANCE – programos egzemplioriaus identifikatorius. Kiekviena programa gauna savo
identifikatorių tam, kad branduolys galėtų bendrauti su ja. Pavyzdžiui, norint sukurti naują langą, reikia
perduoti programos HINSTANCE kintamąjį branduoliui, kad jis žinotų, kam priklauso naujas langas. Šis
identifikatorius žymimas “h” ir, kadangi dažniausiai yra vienintelis, apibrėžiamas kaip:
Programoje aprašomas:
typedef HANDLE HINSTANCE;
![Page 20: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/20.jpg)
HMENU
Jei programa turi slankųjį meniu, jis turės savo identifikatorių HMENU. Tam, kad rodyti meniu ar keisti jo turinį, reikia turėti priėjimą prie šio identifikatoriaus. Dažniausiai žymimas “h”.
![Page 21: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/21.jpg)
Be HWND, HMENU, HISTANCE yra daugelis kitų „rankenėlių“ (handles)..
Tokių kaip:
HBITMAP, HBRUSH, HCOLORSPACE, HDESK, HFILE, HPEN, HWND ir t.t.
![Page 22: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/22.jpg)
WPARAM, LPARAM
Senais gerais 16 bitų laikais, parametrai langui buvo perduodami dviem formatais: WORD (16 bitų) ir LONG (32 bitų). Atitinkamai WPARAM yra 16 bitų, o LPARAM – 32 bitų. Šiais laikais abu parametrai yra 32 bitų ilgio, bet vardai liko kaip palikimas. Kadangi šie kintamieji yra daugybiniai jie yra keičiami į kitus duomenų tipus
įskaitant rodykles ir DWORD.
![Page 23: Duomenų tipai](https://reader035.vdocuments.net/reader035/viewer/2022062408/568134e5550346895d9c1886/html5/thumbnails/23.jpg)
Šaltiniai:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
http://www.mif.vu.lt/~tomukas/paskaitos/WinApi.html