Lietotāja saskarnes jēdziens sistēmā Windows ir balstīts uz loga jēdzienu. Dialogi, pogas, vadības paneļi, saraksti ir visi logi. Tāpēc, lai veiktu jebkādas darbības ar jebkuru sava vai kāda cita lietojumprogrammas saskarnes elementu, jums jāiegūst loga rokturis.
Nepieciešams
- - Platformas SDK pakete;
- - sastādītājs.
Instrukcijas
1. solis
Saņemiet rokturi pie loga, izveidojot to. Veiciet izsaukumus uz funkcijām CreateWindow vai CreateWindowEx API vai izsauciet izmantotās ietvara vai bibliotēkas klases atbilstošās iesaiņošanas metodes (nepieciešamajiem objektiem), kas iekapsulē funkcionalitāti darbā ar logiem vai vadīklām. Funkcijas CreateWindow un CreateWindowEx tieši atgriež loga rokturis par veiksmīgu izveidi. Ja piezvanīs neveiksmīgi, viņi atgriež NULL. Kļūdas iemesla kodu var pieprasīt, izmantojot funkciju GetLastError API. Funkciju CreateWindow un CreateWindowEx parametru prototipus un detalizētus aprakstus var iegūt no saitēm https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx un https:// msdn.microsoft.com / lv-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Izmantojot dažādu ietvaru klases, operētājsistēmas loga objektu izveide var notikt vai nu tieši (izsaucot metodi) vai netieši (RAII stratēģijas ieviešana). Tāpēc labāk ir iegūt loga rokturi gatavam inicializētam objektam. Par to klašu metodēm, kas atgriež objekta iekapsulēto loga rokturi, varat uzzināt attiecīgā ietvara dokumentācijā. Piemēram, MFC līdzīga metode ir GetSafeHwnd no CWnd klases.
2. solis
Saņemiet loga rokturi, to meklējot. Izmantojiet FindWindow un FindWindowEx API funkcijas vai atbilstošos klases objektu ietinējus jūsu izmantotajam ietvaram. FindWindow atgriež rokturi augšējā līmeņa logā, ja tas tiek atrasts, vai NULL pēc kļūmes. Meklēšana tiek veikta pēc klases nosaukuma un loga nosaukuma. Funkcijas parametru un aspektu apraksts ir atrodams saitē https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. funkcija FindWindowEx ir līdzīga funkcijai FindWindow tikai ar to atšķirību, ka tā meklē bērnu logus. Programmas FindWindowEx dokumentācija ir pieejama vietnē
3. solis
Atrodot loga rokturi, vienlaikus norādot to komplektus. Izmantojiet API funkcijas EnumWindows, EnumChildWindows, EnumThreadWindows vai izmantoto ietvaru klases objektu metodes. Funkcijas EnumWindows un EnumChildWindows uzskaita attiecīgi augstākā līmeņa logus un pakārtotos logus. Funkcija EnumThreadWindows uzskaita visus norādītā pavediena logus, kas nav bērni. Katrai no šīm funkcijām jānorāda atzīme uz atzvanīšanas procedūru, kurai darbības laikā tiks nodoti atrasto logu rokturi kā parametri. Apvienojot uzskaites funkcijas, iegūstot un analizējot loga rekvizītus atzvanīšanas procedūrā, varat atrast nepieciešamo logu. Aprakstīto funkciju dokumentācija ir norādīta saitēs: - 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. solis
Saņemiet rokturi pie loga ar zināmām koordinātām. Funkcijas WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx atgriež rokturus logos, kuriem pieder norādītais punkts. Funkciju WindowFromPoint ir visvieglāk izmantot, taču tās neatgriež slēpto vai atspējoto logu rokturus. Dokumentāciju par tā lietošanu varat atrast vietnē https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. Funkcijas ChildWindowFromPoint un ChildWindowFromPointEx atrod bērna rokturus. noteikta vecāka loga logi, kas pieder noteiktam punktam. Šajā gadījumā ChildWindowFromPointEx darbību var elastīgi kontrolēt, izmantojot papildu parametru. Šo funkciju dokumentāciju nodrošina saites: - 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.