Duomenų tipai

Download Report

Transcript Duomenų tipai

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ą.
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.
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;
Pavyzdys:
#include <stdint.h>
typedef uint8_t BYTE;
typedef uint16_t WORD;
typedef uint32_t DWORD;
typedef uint64_t QWORD;
BOOL, BOOLEAN
Tipas
BOOL
BOOLEAN
Reikšmė
(TRUE arba FALSE)
(TRUE arba FALSE)
Programoje aprašoma
typedef int BOOL;
typedef byte BOOLEAN;
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;
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.
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
Pavyzdys:
typedef
typedef
typedef
typedef
typedef
typedef
typedef
long LONG;
unsigned long ULONG;
int INT;
unsigned int UINT;
short SHORT;
unsigned short USHORT;
char CHAR;
typedef unsigned char UCHAR;
Žymėjimas

LONG – žymimi “l”

UNIT – žymimi “i” arba “ui”

CHAR, UCHAR – žymimi “c” arba “uc”
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;
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
TSTR, LPTSTR

TSTR – yra TCHAR simbolių eilutė

LPTSTR – yra rodyklė į TSTR tipą.
#define TCHAR * LPTSTR
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ę.

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ą.
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;
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”.
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;
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;
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”.
Be HWND, HMENU, HISTANCE yra daugelis kitų
„rankenėlių“ (handles)..
Tokių kaip:
HBITMAP, HBRUSH, HCOLORSPACE, HDESK,
HFILE, HPEN, HWND ir t.t.
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.
Šaltiniai:

http://msdn.microsoft.com/enus/library/windows/desktop/aa383751(v=vs.85).aspx

http://www.mif.vu.lt/~tomukas/paskaitos/WinApi.html