Langų kūrimas

Download Report

Transcript Langų kūrimas

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