ßê ñòâîðèòè â³êíî Windows

 îñíîâ³ ïðèíöèï³â ôóíêö³îíóâàííÿ êîðèñòóâàëüíèöüêîãî ³íòåðôåéñó îïåðàö³éíèõ ñèñòåì ñ³ìåéñòâà Windows ëåæèòü êîíöåïö³ÿ â³êíà. Ðîáî÷èé ñò³ë, ïàíåëü çàäà÷, ñïèñêè, ä³àëîãè, êíîïêè, ìåíþ - âñå öå â³êíà. Òîìó, ôàêòè÷íî, äëÿ òîãî ùîá â³äîáðàçèòè áóäü-ÿêèé åëåìåíò ³íòåðôåéñó, òðåáà ñòâîðèòè â³êíî windows.
ßê ñòâîðèòè â³êíî Windows




Âàì çíàäîáèòüñÿ
  • - êîìï³ëÿòîð;
  • - Windows Platform SDK.
²íñòðóêö³ÿ


1
Çàðåºñòðóéòå êëàñ â³êíà, ÿêå ìຠáóòè ñòâîðåíî, ÿêùî öå íåîáõ³äíî. Ïðîâåä³òü âèêëèê API-ôóíêö³é RegisterClass, RegisterClassEx àáî âèêîðèñòîâóéòå â³äïîâ³äíèé ôóíêö³îíàë çàñòîñîâóâàíîãî ôðåéìâîðêó.

Ôóíêö³¿ RegisterClass ³ RegisterClassEx ïðèéìàþòü â ÿêîñò³ ºäèíîãî ïàðàìåòðà ïîêàæ÷èêè íà ñòðóêòóðè òèïó WNDCLASS ³ WNDCLASSEX â³äïîâ³äíî. Çíà÷åííÿ, ùî ïîâåðòàºòüñÿ òèïó ATOM ìîæå âèêîðèñòîâóâàòèñÿ çàì³ñòü ³ìåí³ êëàñó ïðè ñòâîðåíí³ â³êíà. ßêùî âèêëèê ôóíêö³¿ çàâåðøèòüñÿ íåâäà÷åþ, áóäå ïîâåðíóòî çíà÷åííÿ 0.

Ñòâîð³òü åêçåìïëÿð ñòðóêòóðè òèïó WNDCLASS àáî WNDCLASSEX. Çàïîâí³òü âñ³ íåîáõ³äí³ ïîëÿ. Çîêðåìà, êîðåêòí³ çíà÷åííÿ ïîâèíí³ áóòè ïîì³ùåí³ â:

- cbSize - ðîçì³ð ñòðóêòóðè â áàéòàõ-
- style - íàá³ð ñòèë³â êëàñó îêíà-
- lpfnWndProc - ïîêàæ÷èê íà â³êîííó ïðîöåäóðó-
- hInstance äåñêðèïòîð ìîäóëÿ, â ÿêîìó ïðîâîäèòüñÿ ðåºñòðàö³ÿ êëàñó â³êíà-
- lpszClassName - ñèìâîë³÷íå ³ì'ÿ êëàñó.

 ³íø³ ïîëÿ ìîæóòü áóòè çàïèñàí³ çíà÷åííÿ NULL. Ïðîâåä³òü âèêëèê ôóíêö³¿ äëÿ ðåºñòðàö³¿ êëàñó â³êíà. Ïåðåâ³ðòå ïîâåðíóòèé ðåçóëüòàò.
2
Âèáåð³òü ³ñíóþ÷èé êëàñ â³êíà, ÿêùî öå íåîáõ³äíî. Âàì ìຠáóòè â³äîìî ñèìâîë³÷íå ³ì'ÿ êëàñó (òå, ÿêå ïåðåäàºòüñÿ ÷åðåç ïîêàæ÷èê lpszClassName ïðè éîãî ðåºñòðàö³¿) àáî â³äïîâ³äíå çíà÷åííÿ òèïó ATOM. Êëàñ ìîæå áóòè ëîêàëüíèì íà ð³âí³ äîäàòêó, ãëîáàëüíèì íà ð³âí³ äîäàòêó (ðåºñòðàö³ÿ âèêîíàíà ç ïðàïîðîì CS_GLOBALCLASS) àáî ñèñòåìíèì. Äî îñòàííüîãî òèïó â³äíîñÿòüñÿ êëàñè â³êîí ç ³ìåíàìè: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Òàê³ êëàñè, ÿê RichEdit20W àáî SysListView32, ðåºñòðóþòüñÿ ïðè çàâàíòàæåíí³ â³äïîâ³äíèõ á³áë³îòåê.
3
Ñòâîð³òü â³êíî Windows. Ñêîðèñòàéòåñÿ API-ôóíêö³ÿìè CreateWindow, CreateWindowEx àáî â³äïîâ³äíèìè ìåòîäàìè-îáãîðòêàìè îá'ºêò³â êëàñ³â âèêîðèñòîâóâàíîãî ôðåéìâîðêó àáî á³áë³îòåêè. Ïðîòîòèï ôóíêö³¿ CreateWindowEx âèãëÿäຠíàñòóïíèì ÷èíîì:


HWND CreateWindowEx (
DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
) -

Ôóíêö³ÿ CreateWindow â³äð³çíÿºòüñÿ â³ä CreateWindowEx ëèøå â³äñóòí³ñòþ ïàðàìåòðà dwExStyle.

Çä³éñí³òü âèêëèê CreateWindow àáî CreateWindowEx. Ïåðåäàéòå ÿê ïàðàìåòð lpClassName ³ì'ÿ àáî çíà÷åííÿ òèïó ATOM êëàñó â³êíà, âèçíà÷åíå íà ïåðøîìó àáî äðóãîìó êðîö³. Ïàðàìåòðàìè x, y, nWidth, nHeight ìîæóòü áóòè êîîðäèíàòè ³ ðîçì³ðè ñòâîðþâàíîãî â³êíà. Äåñêðèïòîð â³êíà-áàòüêà (ÿêùî òàêà º) ïåðåäàºòüñÿ ÷åðåç hWndParent.

Çáåðåæ³òü ³ ïðîàíàë³çóéòå çíà÷åííÿ, ïîâåðíåíå ôóíêö³ÿìè CreateWindow àáî CreateWindowEx. Ïðè óñï³õó âîíè ïîâåðíóòü äåñêðèïòîð íîâîãî â³êíà, ïðè íåâäà÷³ - NULL.
Ïåðåãëÿä³â: 4395

Óâàãà, ò³ëüêè ÑÜÎÃÎÄͲ!