160 likes | 354 Views
Windows API. Lang ų kurimas. Langų kurimas. Langas – tai viena iš pagrindinių sąsajų tarp žmogaus ir programos, naudojamas valdyti programą.
E N D
Windows API Langų kurimas Dariuš Suboč
Langų kurimas • Langas – tai viena iš pagrindinių sąsajų tarp žmogaus ir programos, naudojamas valdyti programą. • Kiekvienas langas turi rėmelį ir antraštę. Rėmelis reikalingas tam, kad apibrėžti darbinį plotą ir galimybe keisti lango dydį. Antraštejė yra užrašytas programos pavadinimas ir lango manipuliavimo mygtukai: minimize, maximize ir close mygtukus.
Langų kurimas • Apsibrėžti lango strukturą • Užregistruoti langą • Sukurti langą
Lango struktura • WNDCLASS struktura Prieš pradedant pildyti strukturą nepamirštame apsibrėžti klasės kaip globalaus kintamojo:
WNDCLASS parametrai • style – lango stilius išanksto apibrežtas keliomis konstatntomis, reikšme pagal nutilejima nuliui (defaultinis stilius) • lpfnWndProc – rodikle į lango proccedurą • cbClsExtra – apibrežia papildomą kiekį baitų rezervuojamu klases strukturai • cbWndExtra – apibrežia papildomą kiekį baitų rezervuojamu lango strukturai • hInstance – deskriptoriaus ekzempliorius, kuris turi lango procedurą klasei
WNDCLASS parametrai • hIcon – ikoneles deskriptorius. Jeigu reikšme yra NULL , sistema naudoja defaultine reikšmę. • hCursor – kursoriaus deskriptorius. • hbrBackground – fono teptuko deskriptorius. Gali būti teptuko deskriptorius arba spalvos reikšme naudojama fonui. • lpszMenuName – rodikle į meniu. Jeigu reikšme NULL langas neturi meniu. • lpszClassname – rodykle vardo katik sukurtos lango klases. Maksimalus ilgis lpszClassName 256
Lango registravimas • Klases registraciją realizuoja funkcija RegisterClass, jeigu funkcija gražina nuli, registracija nepavyko. Parametruose naudojama rodykle į ankščiau sukurta struktura WNDCLASS
Lango sukurimas • Už lango sukurimą yra atsakinga funkcija CreateWindow : Jeigu langas buvo sukurtas sekmingai gražinamas lango sukurimo deskriptorius, įvykus klaidai gražinamas NULL
CreateWindow parametrai • lpClassName – rodykle į lango klases vardą • lpWindowName – rodykle į lango vardą. Naudojamas kuriant valdymo elementus, tuo atvėju lpWindowName nuruodomas elemento identifikatorius • dwStyle – apibrėžia lango stilių, gali būti langų stilių kombinaciją • X – pirmine horizontali lango padėtis • Y – pirmine vertikali lango padėtis
CreateWindow parametrai • nWidth – apibrėžia lango plotį pikseliais • nHeight – apibrėžia lango aukštį pikseliais • hWndParent – tevinio lango deskriptorius • hMenu – meniu deskriptorius • hInstance – lango handle • lpParam – parametru perdavimas
Tam, kad korektiškai atvaizduoti langą reikia įvygdyti dar dvi funkcijas ShowWindow ir UpdateWindow : ShowWindow funkcija parodo langa ekrane. Pirmas parametras – lango deskriptorius Antras parametras – atvaizdavimo režimas
Pranešimų ciklas • Tam, kad galėtume komunikuoti su langų reikia užkurti pranešimų ciklą Funkcija TranslateMessage išverčia pranešimą į WM_KEYDOWN į WM_KEYUP ir WM_CHAR Funkcija DispatchMessage perduoda pranešimą lango procedurai
Lango procedura • Lango procedura – tai dar vienas komponentas atsakingas už lango pranešimų apdorojimą. Funkcija yra kviečiama sistemos ir turi keturis parametrus sutampančius su MSG struktura. hWnd – lango deskriptorius message – pranešimo kodas wParam – papildomas parametras lParam – papildomas parametras
-EX nariai • Windows operacine sistema visa laika atsinaujino is laikui begant pradėjo neužtėkti turimu funkcijų. Todel buvo sukurtos funkcijų prapletimai, WNDCLASSEX, RegisterClassEX, CreateWindowEx su papildomu funkcionalumu.
Dialogo langai • Nors dialogo langą galima sukurti naudojant WNDCLASS struktūrą ir CreateWindow funkciją, bet tam tikslui yra naudojamos funkcijos CreateDialog, DialogBox ar DialogBoxParam, nes dialogo langai iš esmės kuriami ir valdomi kitaip nei kiti langai.