• Viernes 1 de Noviembre de 2024, 10:41

Autor Tema:  Duda Sobre Ventanas  (Leído 1682 veces)

rodgon81

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Duda Sobre Ventanas
« en: Miércoles 6 de Junio de 2007, 21:33 »
0
Hola, esta es mi segunda pregunta en este foro y tengo como duda lo siguiente, a ver si me ayudan:

Como puedo mover una ventana restringiendo el movimiento vertical, quiero decir que la ventana solo se mueva de forma horizontal al arrastrar el mouse.

Y la otra duda es como puedo eliminar el botón que aparece en la barra de tareas de Windows cuando esta ejecutada la aplicación, lo que quiero hacer es que al minimizar la aplicación esta se reduzca a un tamaño pequeño como de vista previa y quiero que también se borre el botón de la barra de tareas, y al volver a restaurarla que vuelva a aparecer el botón en la barra de tareas de Windows.

Ojalá me puedan ayudar, se los agradecería.
Saludos

daltomi

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Duda Sobre Ventanas
« Respuesta #1 en: Jueves 7 de Junio de 2007, 09:40 »
0
Te muestro un fragmento de código de mi proyecto winkillfolder, el código completo se encuentra en www.mygnet.com/codigos/vc/45/
Tal vez pueda servirte como guia de implementación, aunque lo he modificado para que cumpla con la condición que querias:
Código: Text
  1.  
  2. ........
  3.   case WM_SIZE:
  4.     GetWindowRect(hWnd,&rt);
  5.     WinX = rt.right - rt.left;
  6.     WinY = rt.bottom - rt.top;
  7.     break;
  8.   case WM_MOVE:
  9.     GetWindowRect(hWnd,&rt);
  10.     WinX =  rt.left;
  11.     WinY =  rt.top;
  12.     break;
  13.   case WM_LBUTTONDOWN:
  14.     x1 = (int)LOWORD(lParam);
  15.     y1 = (int)HIWORD(lParam);
  16.     SetCapture(hWnd);
  17.     m_cDraw->Draw(1);
  18.     break;
  19.   case WM_MOUSEMOVE:
  20.     if(wParam && MK_LBUTTON)
  21.     {
  22.       x2 = (int)LOWORD(lParam);
  23.       y2 = (int)HIWORD(lParam);
  24.       //Modificado: solo mov. horiz.
  25.       MoveWindow(hWnd,WinX - (x1-x2) ,WinY/* - (y1-y2)*/ ,winW,winH,true);
  26.       break;
  27.     }
  28.     break;
  29.   case WM_LBUTTONUP:
  30.     ReleaseCapture();
  31.     m_cDraw->Draw(0);
  32.     break;
  33. .........
  34.  
  35.  
Saludos.

rodgon81

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Duda Sobre Ventanas
« Respuesta #2 en: Viernes 8 de Junio de 2007, 15:53 »
0
Hola gracias por responder, te cuento que me sirvió el código que me diste, pero me di cuenta de que tiene un problema, lo que pasa es que al mover rápidamente el mouse a la izquierda la ventana desaparece, lo que pasa es que cuando se obtiene “x2” esta devuelve un valor como de 6000, lo que hace que la ventana se salga de pantalla, esto pasa con la implementación del código que hice en mi programa, así como también en el programa “winkillfolder”, si sabes la solución te agradecería me la dieras.

Otra cosa como hacer desaparecer el botón que aparece en la barra de tareas de Windows de una ventana activa.

Gracias por tomarse el tiempo de leer esto.
Saludos.

daltomi

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Duda Sobre Ventanas
« Respuesta #3 en: Sábado 9 de Junio de 2007, 08:14 »
0
:rolleyes: He probado y no me sucede el error que describiste. El valor de "x2" es el rango del ancho de la ventana, el cual es 76 para mi programa. La verdad no sé por que sucede tú error. Yo probé acelerando el puntero del mouse y la ventana detectó todos los estados wm_mousemove y esto gracias a SetCapture(..). Hay que tener en cuenta que el código no es para hacer algún tipo de animación de ventanas o algo asi porque no siempre la ventana recibe el estado wm_mousemove, aún con SetCapture(..).

Sobre eliminar el botón en la barra de tareas de la ventana activa, nunca lo hice, pero puedes hacer que una aplicación no se muestre en el desktop utilizando el SysTray, pero talvez no es lo que estas buscando.

Saludos.

rodgon81

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Duda Sobre Ventanas
« Respuesta #4 en: Lunes 11 de Junio de 2007, 15:27 »
0
Hola, gracias por tomarte el tiempo de responder

Lo del mouse no sé porque ocurre, lo he revisado y requetecontra revisado y no sé lo que pasa, pero si se como se produce, ocurre que al salir por el lado izquierdo de la ventana que se arrastra (solo si muevo el mouse rápidamente a la izquierda) x2 da como resultado +- 6500, lo he probado en dos computadores con Xp, y en los dos produce el problema, tanto en la implementación que yo hice, así como en el programa “winkillfolder”.

Eso si ya lo solucione lo que hice fue reemplazar el calculo de x2, en vez de usar “x2 = (int)LOWORD(lParam);” use “GetCursorPos” y le reste la posición x de la ventana, de esta forma no me ocurre el problema.

Con lo del botón de la barra de tareas seguiré buscando.

Muchas gracias por tu ayuda.
Saludos. :)