Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: vincent en 01 de Enero de 1970, 01:00:00 AM

Título: No minimizar una ventana MFC
Publicado por: vincent en 01 de Enero de 1970, 01:00:00 AM
                                Buenas!

Estoy haciendo una aplicación con MFCs (en las que soy un principiante) y necesito que una ventana no se pueda minimizar. Como lo puedo hacer?

Gracias!                                
Título: No minimizar una ventana MFC
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Vete al diálogo y verás que en sus propiedade hay una opción para esto.                                
Título: No minimizar una ventana MFC
Publicado por: _Grey en 01 de Enero de 1970, 01:00:00 AM
                                Lo que dice Drácula te servira si haces la ventana con el editor de recursos de Visual C++, si lo tienes que hacer a nivel de codigo, tienes que hacer lo siguiente:

-Si la clase de la aplicacion se basa en la CFrameWnd, busca la funcion :
    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
En esta funcion puedes variar el estilo de la ventana, si por ejemplo quieres una ventana "tipica" pero sin el boton de minimizar cambia el cuerpo de la funcion como sigue:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
   cs.style = WS_SYSMENU | WS_MAXIMIZEBOX ;
   if( !CFrameWnd::PreCreateWindow(cs) )
      return FALSE;
   return TRUE;
}

Apartir de aqui, te sera facil cambiar el resto de parametros.

Saludos.                                
Título: No minimizar una ventana MFC
Publicado por: vincent en 01 de Enero de 1970, 01:00:00 AM
                                Ante todo muchas gracias por vuestras respuestas.

Seria posible también hacer que mi ventana fuera siempre la activa?

Efectivamente necesito saber como se hace sin el editor de recursos de Visual C++.

Muchas gracias!                                
Título: No minimizar una ventana MFC
Publicado por: fiero en 01 de Enero de 1970, 01:00:00 AM
                                Imagino que siempre activa te referiras a que esté siempre visible y no sea ocultada por otras, si es así con esta línea:

SetWindowPos( &wndTopMost, 0, 0, 0, 0,
   SWP_NOSIZE | SWP_NOMOVE);


un saludo                                
Título: No minimizar una ventana MFC
Publicado por: _Grey en 01 de Enero de 1970, 01:00:00 AM
                                ... Y ademas de como comenta fiero, tambien puedes usar el parametro dwExStyle para especificarlo :

cs.dwExStyle=WS_EX_TOPMOST;

En lugar de :
cs.style = WS_SYSMENU | WS_MAXIMIZEBOX ;
Tambien se puede usar :
cs.style &=~WS_MAXIMIZEBOX ;
Para conservar los parametros que ya tenga el "style", con lo que el cuerpo de la funcion quedaria en :

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &=~WS_MAXIMIZEBOX ;
cs.dwExStyle=WS_EX_TOPMOST;
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
return TRUE;
}

Saludotes.