Autor
|
Tema: Como evitar el minimizado de un formulario??? (Leído 13,115 veces)
|
TomaSs
Desconectado
Mensajes: 101
|
porlomenos lee un poco, no? xddd
|
|
|
En línea
|
|
|
|
Crazy.sx
Desconectado
Mensajes: 447
|
Pues eso, que quería saber si hay alguna manera de evitar el minimizado de un formulario, no quitar el botón de minimizar, sino evitar el minimizado de alguna manera, bien de alguna manera directa que lo evite, o detectando el momento en que sea minimizado y restaurándolo automáticamente.
Y claro, tampoco quiero un timer o un thread que esté constantemente comprobando si ha sido minimizado o no, porque eso es una chapuza tremenda...
Decir que, principalmente quiero esto para, en el momento que al pinchar en el icono de "mostrar escritorio", evitar que sea minimizado mi formulario.
no quitar el botón de minimizar porlomenos lee un poco, no? xddd
Yo funciono así. No le quité el botón de minimizar, sigue estando ahí  Sólo que está desactivado.  Ok, ok, ya entendí a lo que vas. Pero que raro que la solución que te da seba no sea lo que buscás, porque funciona para lo que pides. Saludos, jeje.
|
|
« Última modificación: 20 Octubre 2012, 09:29 am por Lucas.AR »
|
En línea
|
Destruir K. LOL
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
Por lo que comento aquí: gracias por tu respuesta seba, pero eso tampoco funciona, porque como dijo novlucker, no es que se minimice el formulario, sino que la barra de tareas lo tapa, sin mas.
Con lo cual, los eventos que puso seba no se lanzan en ningún momento al pulsar sobre "mostrar escritorio"
|
|
|
En línea
|
|
|
|
seba123neo
|
la verdad no entiendo, ¿ probaste el codigo que te pase ?.
cuando apretas el minimizar o el mostrar escritorio, se ejecuta un mensaje en la aplicacion que hace que se minimize (no evento), en el codigo que te puse lo que hace es ignorar ese mensaje y por mas que apretes el mostrar escritorio la aplicacion queda como estaba arriba de todo, y si tratas de minimizarlo con el boton de minimizar lo ignora tambien, pone un punto de interrupcion en el codigo y te vas a dar cuenta que al apretar el mostrar escritorio se ejecuta el SC_MINIMIZE que despues se cancela y hace que la aplicacion quede tal cual estaba, no se que es lo que no funciona, sino explicate mejor porque todos entendimos eso.
|
|
« Última modificación: 20 Octubre 2012, 19:51 pm por seba123neo »
|
En línea
|
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
la verdad no entiendo, ¿ probaste el codigo que te pase ?.
cuando apretas el minimizar o el mostrar escritorio, se ejecuta un mensaje en la aplicacion que hace que se minimize (no evento), en el codigo que te puse lo que hace es ignorar ese mensaje y por mas que apretes el mostrar escritorio la aplicacion queda como estaba arriba de todo, y si tratas de minimizarlo con el boton de minimizar lo ignora tambien, pone un punto de interrupcion en el codigo y te vas a dar cuenta que al apretar el mostrar escritorio se ejecuta el SC_MINIMIZE que despues se cancela y hace que la aplicacion quede tal cual estaba, no se que es lo que no funciona, sino explicate mejor porque todos entendimos eso.
El problema es que si se consigue evitar que se minimice, pero como mi formulario está sobre la barra de tareas, así:  pues al darle a mostrar escritorio, se pone la barra de tareas sobre mi formulario, quedando este por detrás, la idea sería que nunca quedara por detrás de la barra de tareas
|
|
|
En línea
|
|
|
|
seba123neo
|
logre hacer que al dar mstrar escriotrio se quede donde esta, pero el tema es que si apretas 2 veces rapido algo pasa y se vuelve a ocultar.
digo yo, si queres que la aplicacion este ahi siempre visible, porque no pones un icono en la barra de tareas como hacen todos los programas y listo, ahi no tendrias que lidiar con todo esto, ya que siempre quedaria el icono ahi.
|
|
|
En línea
|
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
yo también lo he logrado y me pasa lo mismo que a ti, cuando doy dos veces muy rápido pasa detrás y si le vuelvo a dar a mostrar escritorio ya si se pone delante, pero finalmente lo he conseguido evitar haciéndole un sleep, así lo he hecho: private bool trayendo = false; const Int32 WM_NCPAINT = 0x85; protected override void WndProc(ref Message m) { if (m.Msg == WM_NCPAINT && !trayendo) { trayendo = true; traerFrente(); } base.WndProc(ref m); } private void traerFrente() { Thread.Sleep(150); this.BringToFront(); trayendo = false; }
Como puedes ver, lo he hecho analizando en WndProc el flag WM_NCPAINT, en vez de el WM_SYSCOMMAND, con el cual no entraba al if Como lo hiciste tu? de la misma forma?
|
|
|
En línea
|
|
|
|
seba123neo
|
parecido, pero con el mensaje WM_KILLFOCUS que se ejecuta cuando el formulario pierde el foco y ahi lo pongo al frente y funciona tambien. por ahi capas que ese mensaje WM_NCPAINT se ejecuta mas veces y hace que se ponga lento si lo queres arrastrar al form, fijate.
|
|
|
En línea
|
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
parecido, pero con el mensaje WM_KILLFOCUS que se ejecuta cuando el formulario pierde el foco y ahi lo pongo al frente y funciona tambien. por ahi capas que ese mensaje WM_NCPAINT se ejecuta mas veces y hace que se ponga lento si lo queres arrastrar al form, fijate.
Claro, pero a mi formulario le he quitado los bordes, y supuestamente es para que no se mueva nunca, es decir, que una vez que se ejecuta se coloca donde se tiene que colocar y no se le permite que se mueva xdd De todos modos, muchas gracias por la ayuda a todos los que ayudaron, gracias 
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como empezar un juego "minimizado"?¿
Juegos y Consolas
|
B@RTY
|
4
|
2,816
|
15 Agosto 2006, 01:01 am
por keldorn
|
|
|
Como utilizar swing de un formulario desde otro formulario???????
Java
|
h@lv@88
|
2
|
5,071
|
9 Junio 2008, 00:59 am
por h@lv@88
|
|
|
Como evitar un ataque DDoS y como experimentarlo en servidores reales?
Seguridad
|
Inspiron21
|
2
|
17,351
|
3 Septiembre 2010, 11:36 am
por Silici0
|
|
|
Minimizado no deseado en algunas aplicaciones
« 1 2 »
Windows
|
AsukaHamster
|
14
|
8,405
|
24 Marzo 2014, 20:01 pm
por dato000
|
|
|
Evitar se congele el formulario al hacer un for
« 1 2 »
.NET (C#, VB.NET, ASP)
|
P4nd3m0n1um
|
10
|
10,743
|
14 Mayo 2016, 22:40 pm
por Eleкtro
|
|