winapi - Bestem om et bestemt vindue for øjeblikket bliver flyttet

Indlæg af Hanne Mølgaard Plasc

Problem



Grundlæggende søger jeg et IsWindowMoving (HWND) Win32 API-opkald. Jeg skal vide, om brugeren i øjeblikket bevæger et vindue.


Vinduet tilhører mig ikke, så det er ikke muligt at lytte til WM\_SYSCOMMAND/SC\_MOVE eller WM\_MOVING (jeg ønsker ikke at underklasse eller krog på grund af 32/64 interop).

Bedste reference


Hvis vinduet ikke tilhører dig, og du ikke vil snoop beskeder, er det bedste, du kan tænke, at få fat i et håndtag til vinduet. Det begrænser dig til, uanset hvilke informationsfunktioner der findes, som arbejder på et håndtag. Jeg kender ikke til et sådant opkald, der kan informere brugeren om, at vinduet bliver flyttet.


Du kan være ude af lykke.

Andre referencer 1


Hvis du ikke vil tilslutte, underklasse eller noget andet, mener jeg, at afstemning kan være den nemmeste måde tilbage. Ved hjælp af GetWindowRect kan du spore tidligere og nuværende position og størrelse på et vindue. vil lade dig registrere, om brugeren flytter vinduet (eller endda ændrer størrelsen). Da du beskæftiger dig med brugergrænsefladen, er det ikke nødvendigt at undersøge for hurtigt (selv 2-5 gange om gangen skal være rigeligt). [2]

Andre referencer 2


Du kan gøre dette med GetGUIThreadInfo - ingen tilslutning nødvendig. Brug GetWindowThreadProcessId for at få TID til din hwnd, og tjek derefter GUITHREADINFO.flags og GUITHREADINFO.hwndMoveSize for at se om dit vindue er i en flyt/størrelsesløkke. [3]