Windows-käyttöliittymän käsite perustuu ikkunan käsitteeseen. Dialogit, painikkeet, ohjauspaneelit, luettelot ovat kaikki ikkunoita. Siksi sinun on hankittava ikkunakahva, jotta voit suorittaa minkä tahansa toiminnon omalla tai jonkun muun sovelluksen käyttöliittymän elementillä.
Välttämätön
- - Platform SDK -paketti;
- - kääntäjä.
Ohjeet
Vaihe 1
Hanki kahva ikkunaan luomalla se. Soita puheluihin CreateWindow- tai CreateWindowEx-sovellusliittymäfunktioille tai kutsu käytetyn kehyksen tai kirjaston luokkien asianmukaiset käärintämenetelmät (tarvittaville objekteille), jotka kapseloivat Windowsin tai hallintalaitteiden kanssa työskentelyn toiminnot. CreateWindow- ja CreateWindowEx-toiminnot palauttavat suoraan ikkunan kahva onnistuneesta luomisesta. Jos soitetaan epäonnistuneesti, he palauttavat NULL. Virheen syykoodia voidaan pyytää GetLastError API -toiminnon avulla. Prototyypit ja yksityiskohtaiset kuvaukset CreateWindow- ja CreateWindowEx-funktioiden parametreista ovat linkeistä https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx ja https:// msdn.microsoft.com / fi-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Kun käytetään eri kehysten luokkia, käyttöjärjestelmän ikkunaobjektien luominen voi tapahtua joko nimenomaisesti (kutsumalla menetelmä) tai implisiittisesti (RAII-strategian toteutus). Siksi on parempi saada ikkunan kahva valmiiseen alustettuun objektiin. Voit oppia niiden luokkien menetelmistä, jotka palauttavat objektin ympäröimän ikkunan kahvan vastaavan kehyksen dokumentaatiosta. Esimerkiksi MFC: ssä samanlainen menetelmä on CWnd-luokan GetSafeHwnd.
Vaihe 2
Hanki kahva ikkunaan etsimällä sitä. Käytä FindWindow- ja FindWindowEx-sovellusliittymäfunktioita tai sopivia luokan objektikääreitä käyttämällesi kehykselle. FindWindow palauttaa kahvan ylätason ikkunaan, jos se löytyy, tai NULL-virheen. Haku suoritetaan luokan nimen ja ikkunan nimen mukaan. Kuvaus toiminnon parametreista ja näkökohdista löytyy linkistä https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. FindWindowEx-toiminto on samanlainen kuin FindWindow, sillä ainoa ero on, että se etsii lapsiikkunoita. FindWindowEx-dokumentaatio on saatavana osoitteesta
Vaihe 3
Etsi ikkunan kahva luetteloiden heidän sarjojaan. Käytä API-toimintoja EnumWindows, EnumChildWindows, EnumThreadWindows tai käyttämiesi puitteiden luokan objektien menetelmiä. EnumWindows- ja EnumChildWindows-toiminnot luetelevat vastaavasti ylätason ikkunat ja lapsiikkunat. EnumThreadWindows-toiminto laskee kaikki määritetyn ketjun muut kuin lapsi-ikkunat. Jokainen näistä toiminnoista on välitettävä osoitin takaisinsoittomenettelylle, joka välittää löydettyjen ikkunoiden kahvat parametreina käytön aikana. Yhdistämällä luettelotoiminnot, hakemalla ja analysoimalla ikkunan ominaisuuksia takaisinsoittomenettelyssä, löydät haluamasi ikkuna. Kuvattujen toimintojen dokumentaatio on linkeissä: - 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.
Vaihe 4
Hanki kahva tunnettujen koordinaattien ikkunaan. WindowFromPoint-, ChildWindowFromPoint-, ChildWindowFromPointEx-toiminnot palauttavat kahvat ikkunoihin, joihin määritetty piste kuuluu. WindowFromPoint-toiminto on helpoin käyttää, mutta ei palauta piilotettujen tai käytöstä poistettujen ikkunoiden kahvoja. Löydät asiakirjat sen käytöstä osoitteesta https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. ChildWindowFromPoint- ja ChildWindowFromPointEx-toiminnot löytävät lapselle kahvat. tietyn pisteen ikkunan. Tässä tapauksessa ChildWindowFromPointEx -käyttäytymistä voidaan hallita joustavasti käyttämällä lisäparametriä. Näiden toimintojen dokumentaatio tarjoaa linkit: - 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.