Tengo un Win32 HWND y me gustaría permitir que el usuario mantenga el control y el botón izquierdo del mouse para arrastrar la ventana alrededor de la pantalla. Dado (1) que puedo detectar cuando el usuario tiene control, el botón izquierdo del mouse, y mueve el mouse, y (2) tengo la posición del mouse nueva y antigua, ¿cómo uso la API de Win32 y mi HWND para cambiar la posición de la ventana?¿Cómo implemento arrastrando una ventana usando su área de cliente?
11
A
Respuesta
31
Implemente un controlador de mensajes para WM_NCHITTEST. Llame a DefWindowProc() y verifique si el valor devuelto es HTCLIENT. Devuelva HTCAPTION si lo está, de lo contrario, devuelva el valor de retorno de DefWindowProc. Ahora puede hacer clic en el área del cliente y arrastrar la ventana, del mismo modo que arrastraría una ventana haciendo clic en el título.
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..
}
Cuestiones relacionadas
- 1. ¿Cómo dibujar en el área no cliente?
- 2. Transparencia de ventana WPF (incluido el área no cliente)
- 3. WinAPI: Crear una ventana con un tamaño de área de cliente especificado
- 4. Cómo cambiar el propietario de una ventana usando su identificador
- 5. Cómo establecer el tamaño del área No cliente de una ventana Win32 (nativa)
- 6. ¿Cómo implemento una ventana sin bordes con WPF?
- 7. ¿Cómo obtener un tamaño de cliente de ventana de WPF?
- 8. Cómo obtener las coordenadas del área del cliente de la ventana
- 9. ¿Cómo implemento una aplicación de escritorio Python?
- 10. Arrastrando una imagen en WPF
- 11. Cómo guardar el área de cliente de una ventana secundaria en un archivo de mapa de bits?
- 12. ¿Cómo diseño una ventana de 3 paneles usando wxPython?
- 13. Arrastrando: Reemplazo de los datos
- 14. ¿Cómo implemento correctamente una función de "minimizar a la bandeja" en Qt?
- 15. Actualice su cliente de Subversion .... ¿Cómo?
- 16. ¿Cómo puedo verificar si una ventana tiene barras de desplazamiento visibles usando su HWND?
- 17. ¿Cómo hacer que NSView no recorta su área de delimitación?
- 18. Arrastrando/moviendo un QPushButton en PyQt
- 19. Tubería de implemento ("|") usando C .. (horquilla utilizada)
- 20. ¿Cómo implemento una matriz de cadenas?
- 21. ¿Cómo implemento una lista personalizada en Cocoa?
- 22. ¿Cómo abro una nueva ventana usando jQuery?
- 23. Cómo cerrar una ventana usando jQuery
- 24. ¿Cómo implemento quicksort usando un archivo por lotes?
- 25. ¿Cómo implemento una pantalla de inicio de sesión en GWT?
- 26. ¿Cómo implemento MVCC?
- 27. Cómo detectar que una ventana ha agotado su llamada "ShowDialog"
- 28. javascript: ¿Cómo puede una ventana principal saber que su ventana hija está cerrada?
- 29. ¿Cómo cerrar la ventana por su nombre?
- 30. ¿Cómo implemento una colección en Scala 2.8?
es la respuesta correcta –
espera ... si esto es posible para ventanas hijas ... Estoy sorprendido ... – Dmitry
No sólo eso, se puede, por ejemplo, devolver uno de los valores punta, como HTBOTTOMRIGHT y ahora obtiene un cursor de cambio de tamaño y puede hacerlo más grande o más pequeño arrastrando la esquina. El poder. –