Hoe Krijg Je Een Handvat Aan Een Raam?

Inhoudsopgave:

Hoe Krijg Je Een Handvat Aan Een Raam?
Hoe Krijg Je Een Handvat Aan Een Raam?

Video: Hoe Krijg Je Een Handvat Aan Een Raam?

Video: Hoe Krijg Je Een Handvat Aan Een Raam?
Video: 18 GEWELDIGE IDEEËN MET WD-40 2024, November
Anonim

Het concept van de gebruikersinterface in Windows is gebaseerd op het concept van een venster. Dialogen, knoppen, bedieningspanelen, lijsten zijn allemaal vensters. Daarom, om enige actie uit te voeren met enig element van de interface van uw eigen of andermans toepassing, moet u een vensterhandvat hebben.

Hoe krijg je een handvat aan een raam?
Hoe krijg je een handvat aan een raam?

Noodzakelijk

  • - Platform SDK-pakket;
  • - compiler.

instructies:

Stap 1

Haal het handvat naar het raam door het te maken. Maak aanroepen van de API-functies CreateWindow of CreateWindowEx, of roep de juiste wrapper-methoden (op de benodigde objecten) van de klassen van het gebruikte framework of de bibliotheek aan die de functionaliteit van het werken met vensters of besturingselementen omvatten. De functies CreateWindow en CreateWindowEx retourneren direct de venstergreep op succesvolle creatie. Als ze zonder succes worden gebeld, retourneren ze NULL. De foutoorzaakcode kan worden opgevraagd met behulp van de GetLastError API-functie. Prototypes en gedetailleerde beschrijvingen van de parameters van de functies CreateWindow en CreateWindowEx kunnen worden verkregen via de links https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx en https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Wanneer klassen van verschillende frameworks worden gebruikt, kan het maken van vensterobjecten van het besturingssysteem expliciet plaatsvinden (door een methode aan te roepen) of impliciet (implementatie van de RAII-strategie). Daarom is het beter om de venstergreep op een kant-en-klaar geïnitialiseerd object te krijgen. U kunt meer te weten komen over de methoden van de klassen die de vensterhandle retourneren die is ingekapseld door het object in de documentatie van het bijbehorende raamwerk. In MFC is een vergelijkbare methode bijvoorbeeld GetSafeHwnd van de CWnd-klasse.

Stap 2

Krijg een handvat naar een venster door ernaar te zoeken. Gebruik de FindWindow- en FindWindowEx-API-functies of de juiste klasseobjectwrappers voor het framework dat u gebruikt. FindWindow retourneert een handle naar het bovenste venster als deze wordt gevonden, of NULL bij een fout. De zoekopdracht wordt uitgevoerd op klassenaam en venstertitel. Beschrijving van de parameters en aspecten van de functie is te vinden op de link https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. De semantiek van de functie FindWindowEx is vergelijkbaar met FindWindow, met als enige verschil dat het zoekt naar onderliggende vensters. De documentatie voor FindWindowEx is beschikbaar op

Stap 3

Zoek het handvat naar het raam terwijl je hun sets opsomt. Gebruik de API-functies EnumWindows, EnumChildWindows, EnumThreadWindows of methoden van klasseobjecten van het framework dat u gebruikt. De functies EnumWindows en EnumChildWindows geven respectievelijk een opsomming van vensters op het hoogste niveau en onderliggende vensters. De functie EnumThreadWindows somt alle niet-onderliggende vensters van de opgegeven thread op. Aan elk van deze functies moet een pointer worden doorgegeven naar een callback-procedure, die tijdens de operatie de handvatten van de gevonden vensters als parameters zal doorgeven. Door opsommingsfuncties te combineren, venstereigenschappen op te halen en te analyseren in de callback-procedure, kunt u de handle vinden van het gewenste venster. De documentatie voor de beschreven functies vindt u via de links: - 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.

Stap 4

Krijg een handvat naar een raam op bekende coördinaten. De functies WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx retourneren handvatten naar de vensters waartoe het opgegeven punt behoort. De functie WindowFromPoint is het gemakkelijkst te gebruiken, maar retourneert geen handvatten voor verborgen of uitgeschakelde vensters. U kunt documentatie over het gebruik ervan vinden op https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. De functies ChildWindowFromPoint en ChildWindowFromPointEx vinden handvatten voor het kind vensters van een bepaald bovenliggend venster dat bij een bepaald punt hoort. In dit geval kan het gedrag van ChildWindowFromPointEx flexibel worden gecontroleerd met behulp van een extra parameter. De documentatie voor deze functies wordt geleverd door de links: - 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.

Aanbevolen: