Possiedo un HWND Win32 e vorrei consentire all'utente di mantenere il controllo e il pulsante sinistro del mouse per trascinare la finestra sullo schermo. Dato (1) che posso rilevare quando l'utente ha il controllo, il tasto sinistro del mouse e muove il mouse, e (2) ho la nuova e la vecchia posizione del mouse, come posso usare l'API Win32 e il mio HWND per cambiare la posizione della finestra?Come implementare il trascinamento di una finestra utilizzando la sua area client?
11
A
risposta
31
Implementare un gestore di messaggi per WM_NCHITTEST. Chiama DefWindowProc() e controlla se il valore restituito è HTCLIENT. Restituire HTCAPTION se lo è, altrimenti restituire il valore di ritorno DefWindowProc. Ora puoi fare clic sull'area client e trascinare la finestra, proprio come se avessi trascinato una finestra facendo clic sulla didascalia.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_NCHITTEST: {
LRESULT hit = DefWindowProc(hWnd, message, wParam, lParam);
if (hit == HTCLIENT) hit = HTCAPTION;
return hit;
}
// etc..
}
Problemi correlati
- 1. Spostamento di una finestra senza didascalie utilizzando una "area di trascinamento"
- 2. Come implementare una maniglia di trascinamento della tabella TinyMCE?
- 3. Come implementare il trascinamento della selezione in Angular2?
- 4. P4 - cambia area di lavoro per il client
- 5. come ridefinire una macro utilizzando la sua precedente definizione
- 6. Come impostare la dimensione dell'area Non client di una finestra Win32 (nativa)
- 7. Dimensioni/posizione di Winforms Area client MDI
- 8. Più client dovrebbe avere una copia del progetto o ogni client ha la sua copia?
- 9. WinAPI: creazione di una finestra con una dimensione dell'area client specificata
- 10. Come implementare push to client utilizzando Java EE 7 WebSockets?
- 11. Devo implementare la finestra di dialogo dei file come Singleton?
- 12. Come implementare una barra di avanzamento utilizzando il pattern MVVM
- 13. Eventi per il trascinamento della finestra in Java
- 14. Scorri utilizzando il trascinamento della selezione HTML5
- 15. utilizzando solo area heap
- 16. La finestra non si ripristinerà dopo la sua chiusura
- 17. Trascina Jquery trascinabile dalla sua finestra di dialogo jquery padre
- 18. Come sostituire una parola con la sua menzione più rappresentativa utilizzando il modulo Stanford CoreNLP Coreferences
- 19. Accetta il trascinamento dell'immagine da un'altra finestra del browser
- 20. Utilizzando Markdown, come centrare un'immagine e la sua didascalia?
- 21. Come rilevare che una finestra ha esaurito la sua chiamata "ShowDialog"
- 22. Come implementare ServiceStack Redis Client con timeout
- 23. smartGWT è davvero lento come la sua vetrina?
- 24. come iniziare con Elastic Search utilizzando il client di scala
- 25. Implementare l'elemento di trascinamento sulla feature del bordo dello schermo
- 26. Mocking di una classe contro la sua interfaccia beffarda
- 27. Come gestite il ripristino da una connessione errata utilizzando la libreria client java RabbitMQ?
- 28. come utilizzare la funzione di trascinamento della vista di riciclaggio utilizzando il database in tempo reale di Firebase
- 29. Come scorrere la finestra utilizzando la funzione $ .scrollTo() di JQuery()
- 30. Trascinare il trascinamento e rilasciare
è la risposta corretta –
aspettare ... se questo è possibile per le finestre figlio ... Sono stupito ... – Dmitry
Non solo, è possibile ad esempio restituire uno dei valori di punta come HTBOTTOMRIGHT e ora ottieni un cursore di ridimensionamento e puoi renderlo più grande o più piccolo trascinando l'angolo. Il potere. –