Koncept používateľského rozhrania v systéme Windows je založený na koncepcii okna. Dialógy, tlačidlá, ovládacie panely, zoznamy sú všetky okná. Preto, aby ste mohli vykonať akúkoľvek akciu s akýmkoľvek prvkom rozhrania vašej vlastnej aplikácie alebo aplikácie niekoho iného, musíte si zaobstarať kľučku okna.
Nevyhnutné
- - balík SDK platformy;
- - prekladač.
Inštrukcie
Krok 1
Vytvorte kľučku k oknu. Uskutočňujte hovory na funkcie rozhrania API CreateWindow alebo CreateWindowEx alebo na príslušné objekty (na potrebných objektoch) volajte triedy použitej architektúry alebo knižnice, ktoré zapuzdrujú funkčnosť práce s oknami alebo ovládacími prvkami. Funkcie CreateWindow a CreateWindowEx priamo vrátia hodnotu okenná rukoväť na úspešné vytvorenie. Ak budú neúspešne zavolaní, vrátia sa NULL. O kód chyby môžete požiadať pomocou funkcie API GetLastError. Prototypy a podrobné popisy parametrov funkcií CreateWindow a CreateWindowEx možno získať z odkazov https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx a https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Pri použití tried rôznych rámcov môže k vytvoreniu objektov okna operačného systému dôjsť buď explicitne (volaním metódy) alebo implicitne (implementácia stratégie RAII). Preto je lepšie zaobstarať si okennú kľučku na hotovom inicializovanom objekte. O metódach tried, ktoré vracajú kľučku okna zapuzdrenú objektom, sa môžete dozvedieť v dokumentácii príslušného rámca. Napríklad v MFC je podobnou metódou GetSafeHwnd triedy CWnd.
Krok 2
Vyhľadajte kľučku k oknu. Použite funkcie API FindWindow a FindWindowEx alebo vhodné obaly objektov triedy pre rámec, ktorý používate. FindWindow vráti popisovač do okna najvyššej úrovne, ak je nájdený, alebo NULL pri zlyhaní. Vyhľadávanie sa vykonáva podľa názvu triedy a názvu okna. Popis parametrov a aspektov funkcie nájdete na odkaze https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. Sémantika funkcia FindWindowEx je podobná funkcii FindWindow s tým rozdielom, že vyhľadáva podradené okná. Dokumentácia pre FindWindowEx je k dispozícii na
Krok 3
Pri uvádzaní ich súborov nájdite kľučku k oknu. Použite funkcie API EnumWindows, EnumChildWindows, EnumThreadWindows alebo metódy triednych objektov používaného rámca. Funkcie EnumWindows a EnumChildWindows vymenúvajú okná najvyššej úrovne a podradené okná. Funkcia EnumThreadWindows vymenúva všetky nepodradené okná zadaného vlákna. Každej z týchto funkcií musí byť odovzdaný ukazovateľ na procedúru spätného volania, ktorej budú počas prevádzky odovzdané kľučky nájdených okien ako parametre. Kombináciou funkcií výčtu, získaním a analýzou vlastností okna v procedúre spätného volania môžete nájsť popisovač požadované okno. Dokumentácia k opísaným funkciám je uvedená na odkazoch: - 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.
Krok 4
Získajte popisovač okna so známymi súradnicami. Funkcie WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx vracajú úchytky do okien, do ktorých patrí zadaný bod. Funkcia WindowFromPoint je najjednoduchšia na použitie, ale nevracia úchytky pre skryté alebo zakázané okná. Dokumentáciu o jeho použití nájdete na adrese https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. Funkcie ChildWindowFromPoint a ChildWindowFromPointEx nájdu úchytky pre dieťa okná daného nadradeného okna patriace k danému bodu. V takom prípade je možné správanie ChildWindowFromPointEx flexibilne riadiť pomocou dodatočného parametra. Dokumentáciu k týmto funkciám poskytujú odkazy: - 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.