1 / 23

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

Download Presentation

Duomenų tipai

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Duomenų tipai Parengė: Monika Makusaitė

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

  3. QWORD, DWORD, WORD, BYTE

  4. Pavyzdys: #include <stdint.h> typedef uint8_t BYTE; typedef uint16_t WORD; typedef uint32_t DWORD; typedef uint64_t QWORD;

  5. BOOL, BOOLEAN

  6. LONG, INT, SHORT, CHAR

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

  8. Kitų INT ir LONG tipų pavyzdžiai..

  9. 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;

  10. Žymėjimas • LONG – žymimi “l” • UNIT – žymimi “i” arba “ui” • CHAR, UCHAR – žymimi “c” arba “uc”

  11. 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;

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

  13. TSTR, LPTSTR • TSTR – yra TCHAR simbolių eilutė • LPTSTR – yra rodyklė į TSTR tipą. #define TCHAR * LPTSTR

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

  15. VOID, LPCVOID, LPVOID, PVOID

  16. Rodyklės Daugumaduomenųtipųturirodykles. Prietipobūna *, tai reiškia, kadyrarodyklė. Pvz.: PBOOL typedef BOOL *PBOOL; PBOOLEANtypedef BOOLEAN *PBOOLEAN; PDWORDtypedef DWORD *PDWORD; PINT typedefint *PINT;

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

  18. 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”. Programojeaprašomas: typedef HANDLE HWND;

  19. 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: Programojeaprašomas: typedef HANDLE HINSTANCE;

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

  21. Be HWND, HMENU, HISTANCE yra daugelis kitų „rankenėlių“ (handles).. Tokių kaip: HBITMAP, HBRUSH, HCOLORSPACE, HDESK, HFILE, HPEN, HWND ir t.t.

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

  23. Šaltiniai: • http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx • http://www.mif.vu.lt/~tomukas/paskaitos/WinApi.html

More Related