Page 1 of 1

¿Se puede desactivar el botón "X" de cerrar una ve

Posted: Wed Apr 09, 2008 4:13 pm
by Rafael Clemente
Quisiera desactivar y que aparezca desactivado botón de cerrar ("X") de una ventana pero manteniendo activos el de minimizar y maximizar.

Gracias,

Rafael

Posted: Wed Apr 09, 2008 5:19 pm
by karinha

Code: Select all

SHOWTASKBAR() //habilita
HIDETASKBAR() //desabilita
TIRA_X() // DESABILITA O X da janela
PISCA_EXE() // VAI PISCAR O SEU EXE NA BARRA

#pragma BEGINDUMP

#include "windows.h"
#include "shlobj.h"
#include "hbapi.h"
#include "math.h"
#include "hbvm.h"
#include "hbstack.h"
#include "hbapiitm.h"
#include "hbapigt.h"

HB_FUNC ( SHOWTASKBAR ) //Habilita o botao INICIAR
{
HWND hWnd = FindWindow("Shell_TrayWnd", "");

ShowWindow( hWnd, 1 );
}

HB_FUNC ( HIDETASKBAR ) //Desabilita o botao Iniciar
{
HWND hWnd = FindWindow("Shell_TrayWnd", "");

ShowWindow( hWnd, 0 );
}

HB_FUNC ( PISCA_EXE ) // VAI PISCAR O SEU EXE NA BARRA
{
HWND Handle = GetForegroundWindow();

FlashWindow(Handle,TRUE); // VAI PISCAR O SEU EXE NA BARRA

Sleep(300); // TEMPO DE ESPERA
}


HB_FUNC ( TIRA_X ) // DESABILITA O X da janela

{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);

EnableMenuItem(MenuH,SC_CLOSE,MF_GRAYED);
}

#pragma ENDDUMP


Posted: Wed Apr 09, 2008 5:22 pm
by karinha

Code: Select all

    ACTIVATE WINDOW oWnd MAXIMIZED                                           ;
             ON INIT( TIRA_X() )

Posted: Wed Apr 09, 2008 5:33 pm
by Rafael Clemente
Funciona perfectamente. Muchas gracias, João!!!

Rafael

Posted: Wed Apr 09, 2008 6:54 pm
by Antonio Linares
Rafael,

Tambien podrías usar un VALID en la ventana ó en el diálogo, que impidan que puedan cerrarse

Posted: Wed Apr 09, 2008 7:04 pm
by Rafael Clemente
Antonio:
Sí; ya lo había probado pero es que la solución de Joao tiene la ventaja de que deja "Disabled" el botón "X", que es lo que yo quería.
Gracias
Rafael

Posted: Wed Apr 09, 2008 8:07 pm
by joseluisysturiz
Si usas Pelles C lo puedes hacer desde el diseño del recurso.

Posted: Wed Apr 09, 2008 8:29 pm
by karinha
joseluisysturiz wrote:Si usas Pelles C lo puedes hacer desde el diseño del recurso.
NO EN LA WINDOW PRINCIPAL.

EN DIALOGOS, SI ÉS POSIBLE INCLUSIVE EN WORKSHOP.

Saludos.

Posted: Thu Apr 10, 2008 6:09 pm
by George
Karinha,

Perfecto!

En el caso mio me interesa el hacer lo contrario de Rafael Clemente. Quisiera dejar activo el boton de cerrar [X]; pero quiero desactivar los botones de Minimizar y Maximizar el Window.

Me podrias indicar como hacerlo?

Saludos,

George

Posted: Thu Apr 10, 2008 6:29 pm
by karinha
George wrote:Karinha,

Perfecto!

En el caso mio me interesa el hacer lo contrario de Rafael Clemente. Quisiera dejar activo el boton de cerrar [X]; pero quiero desactivar los botones de Minimizar y Maximizar el Window.

Me podrias indicar como hacerlo?

Saludos,

George
ESTO, FIVEWIN HACE POR DEFECTO, MIRA LA CLASSE WINDOW.PRG

Saludos.

Posted: Thu Apr 10, 2008 6:36 pm
by karinha
Desculpa mi respuesta, por ejemplo:

debes controlar via STYLE de la window principal

Code: Select all

      nStyle = nOr( WS_CLIPCHILDREN,;
                    If( cBorder == "NONE",   WS_POPUP, 0 ),;
                    If( cBorder == "SINGLE", WS_THICKFRAME, 0 ),;
                    If( lCaption, WS_CAPTION, 0 ),;
                    If( lSysMenu .and. lCaption, WS_SYSMENU, 0 ),;
                    If( lMin .and. lCaption, WS_MINIMIZEBOX, 0 ),;
                    If( lMax .and. lCaption, WS_MAXIMIZEBOX, 0 ),;
                    If( lVScroll, WS_VSCROLL, 0 ),;
                    If( lHScroll, WS_HSCROLL, 0 ) )

Posted: Thu Apr 10, 2008 7:49 pm
by George
Gracias karinha!