Domanda

In sostanza, sto cercando un IsWindowMoving chiamata API (HWND) Win32. Ho bisogno di sapere se l'utente sta muovendo una finestra.

La finestra non mi appartiene, in modo da ascoltare per WM_SYSCOMMAND / SC_MOVE o WM_MOVING non è possibile (io non voglio sottoclasse o agganciare a causa 32/64 interoperabilità).

È stato utile?

Soluzione

Se la finestra non appartiene a te e tu non stai andando a curiosare i messaggi, il meglio che posso pensare è entrare in possesso di una maniglia a quella finestra. Questo limita a ciò che esisti chiamate di funzione informativi che funzionano su una maniglia. Non conosco nessun tale chiamata in grado di informare l'utente che la finestra viene spostata.

Si può essere fuori di fortuna.

Altri suggerimenti

Se non si desidera collegare, sottoclasse, o qualsiasi altra cosa del genere, penso polling potrebbe essere il modo più semplice di sinistra. Utilizzando GetWindowRect è possibile tenere traccia della precedente e dell'attuale posizione e le dimensioni di una finestra. Facendo un delta vi permetterà di rilevare se l'utente è in movimento (o anche il ridimensionamento) della finestra. Dal momento che si tratta di interfaccia utente, non v'è alcuna necessità di polling troppo in fretta (anche 2-5 volte al secondo dovrebbe essere un sacco).

Si può fare questo con GetGUIThreadInfo - nessun aggancio bisogno. Utilizzare GetWindowThreadProcessId per ottenere il TID per il hwnd quindi controllare le GUITHREADINFO.flags e GUITHREADINFO.hwndMoveSize per vedere se la finestra è in un / ciclo mossa dimensioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top