Page 2 of 3

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Thu Aug 07, 2014 5:39 pm
by Javier Tovar
DENTRO de la función Main() NO. Después de la Función Main()

Code: Select all

Function Main ()

DEFINE WINDOW
ON INIT DISABLECLOSEBUTTON
....
....
....
END WINDOW

RETURN NIL

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

/******
*
*       Blocking window close button
*
*/

HB_FUNC( DISABLECLOSEBUTTON )
{
  HWND hWnd;
  HMENU hMenu; 
  
  hWnd = (HWND) hb_parnl( 1 );
  hMenu = GetSystemMenu( hWnd, FALSE );
   
  if (hMenu != 0)
  { 
   DeleteMenu( hMenu, SC_CLOSE, MF_BYCOMMAND);
  } 

}

#pragma ENDDUMP




Saludos

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Thu Aug 07, 2014 6:28 pm
by Jairo Maia
Hi,

In Console Mode can to use GTWVG:

Code: Select all

/*
  Hbmk2 exemplo.prg -gtwvg -lhbwin
*/

#include "hbgtinfo.ch"

HB_GtInfo( HB_GTI_CLOSEABLE, .F. )

Function Main()
 
 SetColor( "W/W" )
 Clear Screen
 
 SetColor( "GR+/W" )
 Hb_DispBox( 1, 1, MaxRow()-1, MaxCol()-1, "ÚÄ¿³ÙÄÀ³ÃÄ´" )
 
 SetColor( "B+/W" )
 @ MaxRow()/2, 20 Say [Tecle Algo para Fechar. Botao "X" Desabilitado]
 Inkey(0)
 
Return Nil

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Thu Aug 07, 2014 9:07 pm
by abinfra
Hola Jairo, gracias por responder.

Lamento decir que compilando con la opción -gtwvg, ya de por sí no se puede cerrar la ventana desde la esquina superior derecha, icono (X).

Yo lo que no quiero es utilizar la instrucción -gtwvg y dar con alguna instrucción que no deje cerrar la ventana desde dicho icon (X).

No usando -gtwvt ni -gtwvg, al pulsar con el botón derecho del ratón arriba del todo de la ventana, por encima del menú, aparece la opción de "propiedades" y dentro de propiedades se puede hacer la ventana más grande o mas pequeña. Sin embargo si uso las opciones mencionadas, no aparece la opción de "propiedades".

Saludos cordiales.
Antonio



Jairo Maia wrote:Hi,

In Console Mode can to use GTWVG:

Code: Select all

/*
  Hbmk2 exemplo.prg -gtwvg -lhbwin
*/

#include "hbgtinfo.ch"

HB_GtInfo( HB_GTI_CLOSEABLE, .F. )

Function Main()
 
 SetColor( "W/W" )
 Clear Screen
 
 SetColor( "GR+/W" )
 Hb_DispBox( 1, 1, MaxRow()-1, MaxCol()-1, "ÚÄ¿³ÙÄÀ³ÃÄ´" )
 
 SetColor( "B+/W" )
 @ MaxRow()/2, 20 Say [Tecle Algo para Fechar. Botao "X" Desabilitado]
 Inkey(0)
 
Return Nil

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Thu Aug 07, 2014 9:18 pm
by abinfra
Hola Javier.
Si pongo:
FUNCTION Main()
DEFINE WINDOW
ON INIT DISABLECLOSEBUTTON
...
...
...
END WINDOW
RETURN Nil

Y a continuación:
pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"

/******
*
* Blocking window close button
*
*/

HB_FUNC( DISABLECLOSEBUTTON )
{
HWND hWnd;
HMENU hMenu;

hWnd = (HWND) hb_parnl( 1 );
hMenu = GetSystemMenu( hWnd, FALSE );

if (hMenu != 0)
{
DeleteMenu( hMenu, SC_CLOSE, MF_BYCOMMAND);
}

}
#pragma ENDDUMP


Me da error de sintaxis al compilar, en:
WINDOW -->en la línea donde figura: DEFINE WINDOW
INIT -->en la línea donde figura: ON INIT DISABLECLOSEBUTTON
END -->en la línea donde figura: END WINDOW

O sea, en las tres líneas dentro de la función MAIN()

Saludos cordiales,
Antonio




Javier Tovar wrote:DENTRO de la función Main() NO. Después de la Función Main()

Code: Select all

Function Main ()

DEFINE WINDOW
ON INIT DISABLECLOSEBUTTON
....
....
....
END WINDOW

RETURN NIL

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

/******
*
*       Blocking window close button
*
*/

HB_FUNC( DISABLECLOSEBUTTON )
{
  HWND hWnd;
  HMENU hMenu; 
  
  hWnd = (HWND) hb_parnl( 1 );
  hMenu = GetSystemMenu( hWnd, FALSE );
   
  if (hMenu != 0)
  { 
   DeleteMenu( hMenu, SC_CLOSE, MF_BYCOMMAND);
  } 

}

#pragma ENDDUMP




Saludos

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Thu Aug 07, 2014 9:34 pm
by danielmaximiliano
estoy intentando hacer un demo para consola que no cierre con la "X".

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Fri Aug 08, 2014 6:33 pm
by Jairo Maia
Hi abinfra,

Thank You for your reply about my message. Now I know that your problem is more complex.

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Sat Aug 09, 2014 2:37 am
by LOUIS
Hola Abinfra

No se ve que empieces tu programa con estas 2 primeras lineas siguientes :

1) #include "HMG.CH"

2) REQUEST HB_GT_WIN_DEFAULT

por qué ?

No dices que estas trabajando en modo console ?

Se supone que estás compilando con el IDE de HMG ... :shock:

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Sat Aug 09, 2014 8:34 am
by abinfra
Hola Louis, gracias por responder.

He puesto antes de la función MAIN() las dos líneas que me dices.
Además de estas dos líneas, hay que añadir dentro de MAIN() o después alguna función o instrucción.
LO IDEAL SERÍA QUE ME PUSIERAS TODO EL CÓDIGO NECESARIO PARA DESACTIVAR LA "X".

Al compilar y enlazar añadiendo las dos líneas que me dices, me sale un error que dice:
hbmk2: Error: Función(es) referenciada, no encontrada, pero desconocida: RELEASEALLWINDOWS()

Gracias por tu ayuda.
Saludos cordiales,
Antonio.

LOUIS wrote:Hola Abinfra

No se ve que empieces tu programa con estas 2 primeras lineas siguientes :

1) #include "HMG.CH"

2) REQUEST HB_GT_WIN_DEFAULT

por qué ?

No dices que estas trabajando en modo console ?

Se supone que estás compilando con el IDE de HMG ... :shock:

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Sat Aug 09, 2014 5:38 pm
by LOUIS
Hola Abinfra

Esperemos el ejemplo de Daniel Maximiliano, porque Yo tambien tengo el mismo problema :cry:

Re: Deshabilitar la "X" de cerrar el programa.

Posted: Mon Aug 11, 2014 3:14 pm
by danielmaximiliano
Hola a Todos :

Todavia estoy luchando para saber la instancia donde corre la aplicacion D.O.S creada.
por ahora les sugiero utilizar la aplicacion ConsoloNoClose para evitar que una alicacion se cierre utilizando "X" desde su ventana
la misma se puede bajar desde aqui http://www.uwe-sieber.de/files/consolenoclose.zip

funciona muy bien y no consume recursos, esta hecho en Visual Basic.