Как да стигна до дръжка до прозорец

Съдържание:

Как да стигна до дръжка до прозорец
Как да стигна до дръжка до прозорец

Видео: Как да стигна до дръжка до прозорец

Видео: Как да стигна до дръжка до прозорец
Видео: Прозорец до мивката 2024, Април
Anonim

Концепцията за потребителския интерфейс в Windows се основава на концепцията за прозорец. Диалозите, бутоните, контролните панели, списъците са всички прозорци. Следователно, за да извършите някакво действие с който и да е елемент от интерфейса на вашето собствено или чуждо приложение, трябва да вземете дръжка на прозореца.

Как да стигна до дръжка до прозорец
Как да стигна до дръжка до прозорец

Необходимо

  • - SDK пакет за платформа;
  • - компилатор.

Инструкции

Етап 1

Вземете дръжката до прозореца, като я създадете. Извършвайте повиквания към функциите на API CreateWindow или CreateWindowEx или извиквайте подходящите методи за обвиване (на необходимите обекти) на класовете на използваната рамка или библиотека, които капсулират функционалността на работа с прозорци или контроли. Функциите CreateWindow и CreateWindowEx директно връщат прозоречна дръжка при успешно създаване. Ако се извикат неуспешно, те връщат NULL. Кодът за причината за грешка може да бъде поискан с помощта на функцията GetLastError API. Прототипи и подробни описания на параметрите на функциите CreateWindow и CreateWindowEx могат да бъдат получени от връзките https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx и https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx При използване на класове от различни рамки, създаването на обекти на прозореца на операционната система може да се случи или изрично (чрез извикване на метод) или имплицитно (прилагане на стратегията RAII). Ето защо е по-добре да вземете дръжката на прозореца на готов инициализиран обект. Можете да научите за методите на класовете, които връщат манипулатора на прозореца, капсулиран от обекта, в документацията на съответната рамка. Например в MFC подобен метод е GetSafeHwnd от клас CWnd.

Стъпка 2

Вземете дръжка към прозорец, като го потърсите. Използвайте функциите на API FindWindow и FindWindowEx или съответните обвивки на обекти на клас за рамката, която използвате. FindWindow връща манипулатор в прозореца от най-високо ниво, ако е намерен, или NULL при неуспех. Търсенето се извършва по име на клас и заглавие на прозореца. Описание на параметрите и аспектите на функцията можете да намерите на връзката https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. функцията FindWindowEx е подобна на FindWindow с единствената разлика, че търси дъщерни прозорци. Документацията за FindWindowEx е достъпна на адрес

Стъпка 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. Функциите ChildWindowFromPoint и ChildWindowFromPointEx намират дръжки за детето прозорци на даден родителски прозорец, принадлежащи към дадена точка. В този случай поведението на ChildWindowFromPointEx може да бъде гъвкаво контролирано с помощта на допълнителен параметър. Документацията за тези функции се предоставя от връзките: - ChildWindowFromPoint: https://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.

Препоръчано: