Načela delovanja uporabniškega vmesnika operacijskih sistemov družine Windows temeljijo na konceptu okna. Namizje, opravilna vrstica, seznami, pogovorna okna, gumbi in meniji so vsa okna. Pravzaprav morate za prikaz katerega koli elementa vmesnika ustvariti okno okna.
Potrebno
- - prevajalnik;
- - SDK za platformo Windows.
Navodila
Korak 1
Po potrebi registrirajte razred okna, ki ga želite ustvariti. Pokličite funkcije API-ja RegisterClass, RegisterClassEx ali uporabite ustrezno funkcionalnost uporabljenega ogrodja.
Funkciji RegisterClass in RegisterClassEx kot edini parameter sprejmeta kazalce na strukture tipa WNDCLASS oziroma WNDCLASSEX. Vrnjena vrednost tipa ATOM se lahko uporabi namesto imena razreda pri ustvarjanju okna. Če klic funkcije ne uspe, je vrnjena vrednost 0.
Namestite strukturo tipa WNDCLASS ali WNDCLASSEX. Izpolnite vsa potrebna polja. Pravilne vrednosti je treba vnesti zlasti v:
- cbSize - velikost strukture v bajtih;
- slog - nabor slogov za razred oken;
- lpfnWndProc - kazalec na okenski postopek;
- hInstance je ročaj modula, v katerem je registriran razred oken;
- lpszClassName je simbolično ime razreda.
Preostala polja lahko zapišemo z NULL vrednostmi. Pokličite funkcijo za registracijo razreda okna. Preverite vrnjeni rezultat.
2. korak
Po potrebi izberite obstoječi razred oken. Poznati morate simbolično ime razreda (tisto, ki je pri registraciji prešlo skozi kazalec lpszClassName) ali ustrezno vrednost ATOM. Razred je lahko lokalni na ravni aplikacije, globalni na ravni aplikacije (registriran z zastavico CS_GLOBALCLASS) ali sistemski razred. Zadnja vrsta vključuje razrede oken z imeni: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Razredi, kot sta RichEdit20W ali SysListView32, se registrirajo, ko se naložijo ustrezne knjižnice.
3. korak
Ustvarite okno sistema Windows. Uporabite funkcije API CreateWindow, CreateWindowEx ali ustrezne metode ovijanja za predmete razredov ogrodja ali knjižnice, ki jo uporabljate. Prototip funkcije CreateWindowEx je videti takole:
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMeni, HINSTANCE hInstance, LPVOID lpParam);
Funkcija CreateWindow se razlikuje od CreateWindowEx samo v odsotnosti parametra dwExStyle.
Pokličite CreateWindow ali CreateWindowEx. V parameter lpClassName posredujte ime ali vrednost ATOM razreda okna, ki ste ga določili v prvem ali drugem koraku. Parametri x, y, nWidth, nHeight so lahko koordinate in velikosti ustvarjenega okna. Ročaj nadrejenega okna (če obstaja) se prenese skozi hWndParent.
Shranite in razčlenite vrednost, ki jo vrne CreateWindow ali CreateWindowEx. Po uspehu bodo vrnili ročaj v novo okno, ob neuspehu pa NULL.