Windows ընտանիքի գործառնական համակարգերի օգտագործողի ինտերֆեյսի գործունեության սկզբունքները հիմնված են պատուհանի գաղափարի վրա: Աշխատասեղանը, առաջադրանքի տողը, ցուցակները, երկխոսությունները, կոճակները, ընտրացանկերը բոլորը պատուհաններ են: Հետեւաբար, փաստորեն, ինտերֆեյսի ցանկացած տարր ցուցադրելու համար հարկավոր է ստեղծել պատուհանների պատուհան:
Անհրաժեշտ է
- - կազմող;
- - Windows Platform SDK:
Հրահանգներ
Քայլ 1
Անհրաժեշտության դեպքում գրանցեք ստեղծվելիք պատուհանի դասը: Makeանգահարեք API գործառույթներին RegisterClass, RegisterClassEx կամ օգտագործեք օգտագործվող շրջանակի համապատասխան ֆունկցիոնալությունը:
RegisterClass- ը և RegisterClassEx- ի գործառույթները, որպես իրենց միակ պարամետր, ընդունում են համապատասխանաբար WNDCLASS և WNDCLASSEX տիպի կառույցների ցուցիչները: Պատուհան ստեղծելու ժամանակ ATOM տիպի վերադարձի արժեքը կարող է օգտագործվել դասի անվան տեղում: Եթե գործառույթի զանգը ձախողվում է, վերադարձի արժեքը 0 է:
Գործարկել WNDCLASS կամ WNDCLASSEX տիպի կառուցվածքը: Լրացրեք բոլոր անհրաժեշտ դաշտերը: Մասնավորապես, ճիշտ արժեքները պետք է տեղադրվեն հետևյալի մեջ.
- cbSize - կառուցվածքի չափը բայթերում;
- ոճ - ոճերի ամբողջություն պատուհանի դասի համար;
- lpfnWndProc - ցուցիչ դեպի պատուհանի ընթացակարգ;
- hInstance- ը մոդուլի բռնիչ է, որում գրանցված է պատուհանի դասը.
- lpszClassName- ը դասի խորհրդանշական անունն է:
Մնացած դաշտերը կարող են գրվել NULL արժեքներով: Պատուհանի դասը գրանցելու համար գործառույթի զանգ կատարեք: Ստուգեք վերադարձված արդյունքը:
Քայլ 2
Անհրաժեշտության դեպքում ընտրեք առկա պատուհանի դասը: Դուք պետք է իմանաք դասի խորհրդանշական անունը (այն գրանցելիս lpszClassName ցուցիչի միջով անցածը) կամ համապատասխան ATOM արժեքը: Դասը կարող է լինել տեղական ՝ կիրառման մակարդակում, գլոբալ ՝ դիմումի մակարդակում (գրանցված է CS_GLOBALCLASS դրոշով) կամ համակարգի դաս: Վերջին տեսակը ներառում է պատուհանների դասեր `անուններ` կոճակ, ComboBox, Խմբագրել, ListBox, MDIClient, ScrollBar, Static: RichEdit20W կամ SysListView32 դասերի նման գրանցվում են, երբ համապատասխան գրադարանները բեռնվում են:
Քայլ 3
Ստեղծեք Windows- ի պատուհան: Օգտագործեք CreatWindow, CreateWindowEx կամ API գործառույթները, որոնք օգտագործում եք շրջանակի կամ գրադարանի դասի օբյեկտների համար: CreateWindowEx գործառույթի նախատիպն ունի այսպիսի տեսք.
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int n Լայնությունը, int n Բարձրությունը, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
CreateWindow գործառույթը տարբերվում է CreatWindowEx- ից միայն dwExStyle պարամետրի բացակայության պայմաններում:
Callանգահարեք CreateWindow կամ CreateWindowEx: LpClassName պարամետրում փոխանցեք պատուհանի դասի անունը կամ ATOM արժեքը, որը դուք սահմանել եք առաջին կամ երկրորդ քայլում: X, y, nWidth, nHeight պարամետրերը կարող են լինել ստեղծվող պատուհանի կոորդինատներն ու չափերը: Պատուհանի ծնողի բռնակը (եթե այդպիսին է) փոխանցվում է hWndParent- ով:
Պահպանեք և վերլուծեք CreatWindow- ի կամ CreateWindowEx- ի կողմից վերադարձված արժեքը: Հաջողության դեպքում նրանք բռնակը կվերադարձնեն նոր պատուհանի, ձախողման դեպքում ՝ NULL: