Koncept uporabniškega vmesnika v sistemu Windows temelji na konceptu okna. Dialogi, gumbi, nadzorne plošče, seznami so vsa okna. Zato morate za izvedbo kakršnega koli dejanja s katerim koli elementom vmesnika vaše ali tuje aplikacije dobiti okenski ročaj.
Potrebno
- - paket SDK platforme;
- - prevajalnik.
Navodila
Korak 1
Z roko pripnite okno tako, da ga ustvarite. Kličite funkcije CreateWindow ali CreateWindowEx API ali pokličite ustrezne metode zavijanja (na potrebnih objektih) razredov uporabljenega ogrodja ali knjižnice, ki povzemajo funkcionalnost dela z okni ali kontrolniki. Funkciji CreateWindow in CreateWindowEx neposredno vrneta okenski ročaj za uspešno ustvarjanje. V primeru neuspešnega klica vrnejo NULL. Kodo vzroka napake lahko zahtevate s funkcijo API GetLastError. Prototipe in podrobne opise parametrov funkcij CreateWindow in CreateWindowEx lahko dobite na povezavah https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx in https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Pri uporabi razredov različnih okvirov lahko ustvarjanje objektov oken operacijskega sistema poteka bodisi izrecno (s klicem metode) ali implicitno (izvajanje strategije RAII). Zato je bolje dobiti ročaj okna na že pripravljenem inicializiranem objektu. O metodah razredov, ki vrnejo okensko ročico, ki jo je vdelal objekt, lahko izveste v dokumentaciji ustreznega okvira. Na primer, v MFC je podobna metoda GetSafeHwnd razreda CWnd.
2. korak
Poiščite okno z oknom, tako da ga poiščete. Za ogrodje, ki ga uporabljate, uporabite funkcije FindWindow in FindWindowEx API ali ustrezne ovojnice predmetov razreda. FindWindow vrne ročaj v okno najvišje ravni, če ga najdete, ali NULL ob okvari. Iskanje se izvede po imenu razreda in naslovu okna. Opis parametrov in vidike funkcije najdete na povezavi https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. funkcija FindWindowEx je podobna FindWindow z edino razliko, da išče podrejena okna. Dokumentacija za FindWindowEx je na voljo na spletnem mestu
3. korak
Poiščite ročico okna, medtem ko navajate njihove sklope. Uporabite funkcije API EnumWindows, EnumChildWindows, EnumThreadWindows ali metode predmetov razredov ogrodja, ki ga uporabljate. Funkciji EnumWindows in EnumChildWindows naštevata okna najvišje ravni in podrejena okna. Funkcija EnumThreadWindows našteva vsa nepodrejena okna določene niti. Vsaki od teh funkcij je treba posredovati kazalec na postopek povratnega klica, ki bo med delovanjem posredoval ročaje najdenih oken kot parametre. S kombiniranjem funkcij štetja, pridobivanjem in analiziranjem lastnosti okna v postopku povratnega klica lahko najdete ročaj zahtevano okno. Dokumentacija za opisane funkcije je podana na povezavah: - 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. korak
Poiščite ročico do okna na znanih koordinatah. Funkcije WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx vrnejo ročaje v okna, ki jim pripada določena točka. Funkcija WindowFromPoint je najlažja za uporabo, ne vrne pa ročic za skrita ali onemogočena okna. Dokumentacijo o njegovi uporabi najdete na https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. Funkciji ChildWindowFromPoint in ChildWindowFromPointEx najdeta ročaje za otroka okna določenega nadrejenega okna, ki pripadajo določeni točki. V tem primeru lahko vedenje ChildWindowFromPointEx prilagodljivo nadzirate z dodatnim parametrom. Dokumentacija za te funkcije je na voljo na povezavah: - 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.