Koncept korisničkog sučelja u sustavu Windows zasnovan je na konceptu prozora. Dijalozi, gumbi, kontrolne ploče, liste su svi prozori. Stoga, da biste izvršili bilo koju radnju s bilo kojim elementom sučelja vaše ili tuđe aplikacije, morate nabaviti ručku prozora.
Potrebno
- - SDK paket platforme;
- - kompajler.
Instrukcije
Korak 1
Donesite kvaku do prozora tako što ćete je stvoriti. Upućujte pozive funkcijama CreateWindow ili CreateWindowEx API ili pozivajte odgovarajuće metode omota (na potrebnim objektima) klasa korištenog okvira ili biblioteke koje obuhvaćaju funkcionalnost rada s prozorima ili kontrolama. Funkcije CreateWindow i CreateWindowEx izravno vraćaju ručka prozora za uspješno stvaranje. Ako se neuspješno pozove, vraćaju NULL. Kôd razloga greške može se zatražiti pomoću funkcije GetLastError API. Prototipovi i detaljni opisi parametara funkcija CreateWindow i CreateWindowEx mogu se dobiti na vezama https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx i https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Kada se koriste klase različitih okvira, stvaranje objekata prozora operativnog sistema može se desiti ili eksplicitno (pozivanjem metode) ili implicitno (implementacija RAII strategije). Stoga je bolje nabaviti kvaku prozora na gotovom inicijaliziranom objektu. O metodama klasa koje vraćaju kvaku prozora enkapsuliranu objektom možete naučiti u dokumentaciji odgovarajućeg okvira. Na primjer, u MFC-u, slična metoda je GetSafeHwnd klase CWnd.
Korak 2
Dohvatite kvaku do prozora tako što ćete ga potražiti. Koristite funkcije FindWindow i FindWindowEx API ili odgovarajuće omote objekata klase za okvir koji koristite. FindWindow vraća ručicu u prozor najviše razine ako je pronađen ili NULL u slučaju neuspjeha. Pretraga se vrši prema nazivu klase i naslovu prozora. Opis parametara i aspekte funkcije možete pronaći na linku https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. funkcija FindWindowEx slična je FindWindowu s jedinom razlikom što traži podređene prozore. Dokumentacija za FindWindowEx dostupna je na
Korak 3
Pronađite kvaku na prozoru dok listate njihove skupove. Koristite API funkcije EnumWindows, EnumChildWindows, EnumThreadWindows ili metode objekata klase okvira koji koristite. Funkcije EnumWindows i EnumChildWindows nabrajaju prozore najvišeg nivoa i podređene prozore. Funkcija EnumThreadWindows nabraja sve nepodređene prozore navedene niti. Svakoj od ovih funkcija mora se proslijediti pokazivač na postupak povratnog poziva, koji će se ručicama pronađenog prozora prosljeđivati kao parametri tijekom rada. Kombinacijom funkcija popisivanja, dobivanjem i analizom svojstava prozora u postupku povratnog poziva možete pronaći ručicu potreban prozor. Dokumentacija za opisane funkcije data je na vezama: - 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.
Korak 4
Nabavite kvaku do prozora na poznatim koordinatama. Funkcije WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx vraćaju ručke u prozore kojima pripada navedena točka. Funkcija WindowFromPoint je najjednostavnija za upotrebu, ali ne vraća ručke za skrivene ili onemogućene prozore. Dokumentaciju o njegovoj upotrebi možete pronaći na https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. Funkcije ChildWindowFromPoint i ChildWindowFromPointEx pronalaze ručke za dijete prozori datog nadređenog prozora koji pripadaju danoj točki. U ovom slučaju, ponašanje ChildWindowFromPointEx-a može se fleksibilno kontrolirati pomoću dodatnog parametra. Dokumentaciju za ove funkcije pružaju veze: - 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.