Windows- ում օգտագործողի ինտերֆեյսի գաղափարը հիմնված է պատուհանի գաղափարի վրա: Երկխոսությունները, կոճակները, կառավարման վահանակները, ցուցակները բոլորը պատուհաններն են: Հետեւաբար, ձեր կամ ուրիշի դիմումի միջերեսի ցանկացած տարրով որևէ գործողություն կատարելու համար հարկավոր է ձեռք բերել պատուհանի բռնակ:
Անհրաժեշտ է
- - Պլատֆորմ SDK փաթեթ;
- - կազմող:
Հրահանգներ
Քայլ 1
Բռնակը հասցրեք պատուհանին ՝ ստեղծելով այն: Callsանգահարեք CreatWindow կամ CreateWindowEx API գործառույթներին կամ զանգահարեք օգտագործված շրջանակի կամ գրադարանի դասերի համապատասխան փաթաթման մեթոդներին (անհրաժեշտ օբյեկտների վրա), որոնք պատված են պատուհանների կամ կառավարման համակարգերի հետ աշխատելու ֆունկցիոնալությունը: CreateWindow և CreateWindowEx գործառույթները ուղղակիորեն վերադարձնում են պատուհանի բռնակ հաջող ստեղծման վրա: Եթե անհաջող կանչվում են, նրանք վերադարձնում են NULL: Սխալի պատճառի կոդը կարող է պահանջվել `օգտագործելով GetLastError API գործառույթը: CreatWindow և CreateWindowEx գործառույթների նախատիպերը և մանրամասն նկարագրությունները կարելի է ստանալ https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx հղումներից և https:// msdn.microsoft.com / en-us / գրադարան / windows / աշխատասեղան / ms632680% 28v = vs.85% 29.aspx Տարբեր շրջանակների դասեր օգտագործելիս գործավար համակարգի պատուհանի օբյեկտների ստեղծումը կարող է տեղի ունենալ կամ բացահայտ (մեթոդ կոչելու միջոցով) կամ անուղղակիորեն (RAII ռազմավարության իրականացում): Հետեւաբար, ավելի լավ է պատուհանի բռնակը ձեռք բերել պատրաստի նախնական օբյեկտի վրա: Համապատասխան շրջանակի փաստաթղթերում դուք կարող եք իմանալ այն դասերի մեթոդների մասին, որոնք հետ են բերում պատուհանի բռնակը, որն ընդգրկված է օբյեկտի կողմից: Օրինակ, MFC- ում նման մեթոդը CWnd դասի GetSafeHwnd- ն է:
Քայլ 2
Ձեռք բերեք պատուհանին ՝ որոնելով այն: Օգտագործեք FindWindow և FindWindowEx API գործառույթները կամ համապատասխան դասի օբյեկտների փաթաթաները ձեր կողմից օգտագործվող շրջանակի համար: FindWindow- ը հայտնաբերման դեպքում բռնիչը վերադարձնում է վերին մակարդակի պատուհանի, կամ ձախողման դեպքում ՝ NULL: Որոնումը կատարվում է ըստ դասի անվան և պատուհանի վերնագրի: Գործառույթի պարամետրերի և ասպեկտների նկարագրությունը կարելի է գտնել https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx հղումով: FindWindowEx գործառույթը նման է FindWindow– ին, միայն այն տարբերությամբ, որ այն որոնում է մանկական պատուհաններ: Փաստաթղթերը FindWindowEx- ի համար հասանելի են https://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx կայքում:
Քայլ 3
Գտեք պատուհանի բռնակը `միաժամանակ թվարկելով դրանց հավաքածուները: Օգտագործեք API գործառույթները EnumWindows, EnumChildWindows, EnumThreadWindows կամ դասի օբյեկտների մեթոդներ, որոնք օգտագործում եք ձեր կողմից: EnumWindows և EnumChildWindows գործառույթները համապատասխանաբար թվարկում են վերին մակարդակի պատուհաններն ու մանկական պատուհանները: EnumThreadWindows ֆունկցիան թվարկում է նշված թելի բոլոր ոչ մանկական պատուհանները: Այս գործառույթներից յուրաքանչյուրը պետք է ցուցիչ փոխանցի հետադարձ կապի ընթացակարգին, որը գործարկման ընթացքում կփոխանցվի գտնված պատուհանների բռնակներին: Թվարկման գործառույթները համատեղելով, հետադարձ զանգի կարգում ստացված և վերլուծելով պատուհանի հատկությունները `կարող եք գտնել պահանջվող պատուհանը: Նկարագրված գործառույթների համար փաստաթղթավորումը տրված է հղումներում. - EnumWindows: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms633494%28v=vs.85%29.aspx; - EnumThreadWindows: https://msdn.microsoft.com/en-us/library / windows / desktop /ms633495%28v=vs.85%29.aspx:
Քայլ 4
Հայտնի կոորդինատներով բռնակի բռնեք պատուհանի մոտ: WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx գործառույթները վերացնում են բռնակները այն պատուհաններին, որոնց պատկանում է նշված կետը: WindowFromPoint գործառույթն ամենահեշտն է օգտագործման համար, բայց չի վերադարձնում բռնակներ թաքնված կամ անջատված պատուհանների համար: Դրա օգտագործման վերաբերյալ փաստաթղթերը կարող եք գտնել https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx էջում: տվյալ կետին պատկանող ծնողական պատուհանի պատուհանները: Այս դեպքում ChildWindowFromPointEx- ի վարքը կարող է ճկունորեն վերահսկվել `օգտագործելով լրացուցիչ պարամետր: Այս գործառույթների փաստաթղթավորումը տրամադրվում է հղումներով. - ChildWindowFromPoint: // msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx: