the code is :
Code: Select all
#include <hmg.ch>
REQUEST HB_GT_WIN_DEFAULT // allow console text mode
FUNCTION Main()
DEFINE WINDOW Main ;
AT 0, 0 ;
WIDTH 400 HEIGHT 300 ;
MAIN
//
@10, 10 BUTTON btn_RunDos CAPTION "Run DOS" ACTION Main_btn_RunDos_Action()
//
END WINDOW
//
ACTIVATE WINDOW Main
RETURN NIL
FUNCTION Main_btn_RunDos_Action()
LOCAL hWndDos
THISWINDOW.HIDE
IF VALTYPE( hWndDos) <> 'N'
hWndDos := GetConsoleWindowHandle()
ENDIF
SetForeGroundWindow( hWndDos )
SetMode( 25, 80)
MainDos()
RETURN NIL
FUNCTION MainDos()
? "Console mode"
@1, 10 TO 3, 40
lDos := .F.
OpenWin1()
// @10, 10 GET lDos PUSHBUTTON CAPTION "Open Win1" STATE {|| OpenWin1()}
// @10, 30 GET lDos PUSHBUTTON CAPTION "Open Win2" STATE {|| OpenWin2()}
READ
wait
RETURN NIL
FUNCTION CloseWin( cWin)
msgDebug( cWin, IsWindowDefined( cWin), IsWindowDefined( "Win2 "))
IF IsWindowDefined( cWin)
DoMethod( cWin, "Release")
ENDIF
RETURN NIL
FUNCTION WinOnInit( cWin)
IF cWin == "Win1"
SetProperty( "Win1", "Win1_btnCloseWin2", "Enabled", IsWindowDefined( "Win2"))
ENDIF
IF cWin == "Win2"
SetProperty( "Win2", "Win2_btnCloseWin1", "Enabled", IsWindowDefined( "Win1"))
ENDIF
RETURN NIL
FUNCTION OpenWin2()
DEFINE WINDOW Win2 ;
AT 10, 420 WIDTH 400 HEIGHT 300 TITLE "Win2" CHILD ON INIT WinOnInit( "Win2")
@10, 10 BUTTON Win2_btnWin1 CAPTION "Open Win1" ACTION OpenWin1()
@40, 10 BUTTON Win2_btnCloseWin1 CAPTION "Close Win1" ACTION CloseWin( "Win1")
END WINDOW
IF IsWindowDefined( "Win1")
SetProperty( "Win1", "Win1_btnCloseWin2", "Enabled", IsWindowDefined( "Win2"))
ENDIF
ACTIVATE WINDOW Win2
RETURN NIL
FUNCTION OpenWin1()
MEMVAR _HMG_SYSDATA
DEFINE WINDOW Win1 ;
AT 10, 10 WIDTH 400 HEIGHT 300 TITLE "Win1" CHILD ON INIT WinOnInit( "Win1")
//
@10, 10 BUTTON Win1_btnOpenWin2 CAPTION "Open Win2" ACTION OpenWin2()
@40, 10 BUTTON Win1_btnCloseWin2 CAPTION "Close Win2" ACTION {|| CloseWin( "Win2")}
END WINDOW
IF IsWindowDefined( "Win2")
SetProperty( "Win2", "Win2_btnCloseWin1", "Enabled", IsWindowDefined( "Win1"))
ENDIF
ACTIVATE WINDOW Win1
RETURN NIL
//------------
#pragma BEGINDUMP
// #define WINVER 0x0600 // for Vista
// #define _WIN32_WINNT 0x0600 // for Vista
#include "windows.h"
#include "hbapi.h"
HB_FUNC( GETCONSOLEWINDOWHANDLE )
{
HWND hwnd;
AllocConsole();
hwnd = FindWindowA("ConsoleWindowClass",NULL);
hb_retnl( (LONG) hwnd );
}
#pragma ENDDUMP
Code: Select all
FUNCTION CloseWin( cWin)
msgDebug( cWin, IsWindowDefined( cWin), IsWindowDefined( "Win2 "))
IF IsWindowDefined( cWin)
DoMethod( cWin, "Release")
ENDIF
RETURN NIL
TIA
best rgds,
Chang