Segue outro exemplo para testes, usando hb_gtCreate e hb_gtSelect:
#include "minigui.ch"
#include "hbgtinfo.ch"
REQUEST hb_gt_gui_default
REQUEST hb_gt_wvt
STATIC lFlag := .F.
PROCEDURE Main()
DEFINE WINDOW MainWindow ;
AT 100, 100 ;
WIDTH 640 ;
HEIGHT 480 ;
TITLE "Teste" ;
MAIN
DEFINE MAIN MENU
POPUP "Menu"
ITEM "Janela 1" ACTION telaconsole1()
ITEM "Janela 2" ACTION telaconsole2()
END POPUP
END MENU
END WINDOW
ACTIVATE WINDOW MainWindow
RETURN
STATIC FUNCTION telaconsole1()
LOCAL pNewGT
LOCAL pOldGT
LOCAL cCampo1 := space(30)
IF lFlag
RETURN NIl
ENDIF
lFlag := .T.
//hb_gtReload("WVT")
pNewGT := hb_gtCreate( "WVT" )
pOldGT := hb_gtSelect( pNewGT )
CLS
hb_gtInfo( HB_GTI_WINTITLE, "Janela console 1" )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
@ 10,10 SAY "CAMPO1:" GET cCampo1
READ
? cCampo1
WAIT
//hb_gtReload("GUI")
hb_gtSelect( pOldGT )
pNewGT := NIL
lFlag := .F.
RETURN NIL
STATIC FUNCTION telaconsole2()
LOCAL pNewGT
LOCAL pOldGT
LOCAL cCampo1 := space(30)
LOCAL cCampo2 := space(50)
IF lFlag
RETURN NIl
ENDIF
lFlag := .T.
//hb_gtReload("WVT")
pNewGT := hb_gtCreate( "WVT" )
pOldGT := hb_gtSelect( pNewGT )
CLS
hb_gtInfo( HB_GTI_WINTITLE, "Janela console 2" )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
@ 8,10 SAY "CAMPO1:" GET cCampo1
@ 10,10 SAY "CAMPO2:" GET cCampo2
READ
? cCampo1
? cCampo2
WAIT
//hb_gtReload("GUI")
hb_gtSelect( pOldGT )
pNewGT := NIL
lFlag := .F.
RETURN NIL
Os passos são estes:
1. criar o novo GT
2. selecionar o novo GT, recebendo o anterior como retorno
3. usar o GT
4. selecionar o anterior
5. destruir o novo GT
Mas também precisa de controle para não abrir mais de uma vez.