Conceptul de interfață cu utilizatorul în Windows se bazează pe conceptul de fereastră. Dialogurile, butoanele, panourile de control, listele sunt toate ferestrele. Prin urmare, pentru a efectua orice acțiune cu orice element al interfeței propriei aplicații sau a altcuiva, trebuie să obțineți o fereastră.
Necesar
- - pachet SDK platformă;
- - compilator.
Instrucțiuni
Pasul 1
Accesați mânerul către fereastră creându-l. Efectuați apeluri către funcțiile API CreateWindow sau CreateWindowEx sau apelați metodele de împachetare corespunzătoare (pe obiectele necesare) din clasele cadrului sau bibliotecii utilizate care încapsulează funcționalitatea de lucru cu ferestre sau controale. Funcțiile CreateWindow și CreateWindowEx returnează direct fereastra pentru crearea cu succes. Dacă sunt apelați fără succes, returnează NULL. Codul motiv de eroare poate fi solicitat utilizând funcția API GetLastError. Prototipuri și descrieri detaliate ale parametrilor funcțiilor CreateWindow și CreateWindowEx pot fi obținute de la linkurile 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 Când se utilizează clase de cadre diferite, crearea obiectelor ferestrei sistemului de operare poate avea loc fie în mod explicit (prin apelarea unei metode) sau implicit (implementarea strategiei RAII). Prin urmare, este mai bine să obțineți mânerul ferestrei pe un obiect inițial gata făcut. Puteți afla despre metodele claselor care returnează mânerul ferestrei încapsulat de obiect în documentația cadrului corespunzător. De exemplu, în MFC, o metodă similară este GetSafeHwnd din clasa CWnd.
Pasul 2
Obțineți un mâner pentru o fereastră căutând-o. Utilizați funcțiile API FindWindow și FindWindowEx sau ambalajele de obiecte de clasă corespunzătoare pentru cadrul pe care îl utilizați. FindWindow returnează un handle la fereastra de nivel superior dacă este găsit sau NULL în caz de eșec. Căutarea se efectuează după numele clasei și titlul ferestrei. Descrierea parametrilor și aspectelor funcției poate fi găsită la linkul https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. Semantica funcția FindWindowEx este similară cu FindWindow, singura diferență constând în căutarea ferestrelor copil. Documentația pentru FindWindowEx este disponibilă la
Pasul 3
Găsiți mânerul la fereastră în timp ce listați seturile lor. Utilizați funcțiile API EnumWindows, EnumChildWindows, EnumThreadWindows sau metodele obiectelor de clasă ale cadrului pe care îl utilizați. Funcțiile EnumWindows și EnumChildWindows enumeră ferestrele de nivel superior și respectiv ferestrele copil. Funcția EnumThreadWindows enumeră toate ferestrele non-copil ale firului specificat. Fiecare dintre aceste funcții trebuie să treacă un pointer către o procedură de apelare inversă, care va fi trecută de mânerele ferestrelor găsite ca parametri în timpul funcționării. Prin combinarea funcțiilor de enumerare, obținerea și analizarea proprietăților ferestrei în procedura de apelare inversă, puteți găsi mânerul fereastra necesară. Documentația pentru funcțiile descrise este dată la linkurile: - 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.
Pasul 4
Obțineți un mâner către o fereastră la coordonatele cunoscute. Funcțiile WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx returnează mânere la ferestrele la care aparține punctul specificat. Funcția WindowFromPoint este cea mai ușor de utilizat, dar nu returnează mânere pentru ferestrele ascunse sau dezactivate. Puteți găsi documentație privind utilizarea acestuia la https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. Funcțiile ChildWindowFromPoint și ChildWindowFromPointEx găsesc mânere pentru copil ferestrele unei ferestre părinte date aparținând unui punct dat. În acest caz, comportamentul ChildWindowFromPointEx poate fi controlat flexibil folosind un parametru suplimentar. Documentația pentru aceste funcții este furnizată de linkurile: - 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.