Page 1 of 1

isWindowDefined() value

Posted: Fri Jun 01, 2018 9:52 pm
by hmgchang
Dear Friends,

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  
When click button closeWin2 on form Win1, i get this :
msgDebug( cWin, IsWindowDefined( cWin), IsWindowDefined( &quot;Win2 &quot;))
msgDebug( cWin, IsWindowDefined( cWin), IsWindowDefined( "Win2 "))
error1.JPG (47.13 KiB) Viewed 1633 times
the function :

Code: Select all

FUNCTION CloseWin( cWin)
  msgDebug( cWin, IsWindowDefined( cWin), IsWindowDefined( "Win2 "))
  IF IsWindowDefined( cWin)
    DoMethod( cWin, "Release")
  ENDIF
  RETURN NIL
Pls advise this behavior...

TIA
best rgds,
Chang

Re: isWindowDefined() value

Posted: Sat Jun 02, 2018 1:59 pm
by KDJ
Chang

Code: Select all

FUNCTION CloseWin(cWin)
  msgDebug(cWin, IsWindowDefined(&cWin), _IsWindowDefined("Win2"))
  IF IsWindowDefined(&cWin)
    DoMethod(cWin, "Release")
  ENDIF
  RETURN NIL

Re: isWindowDefined() value

Posted: Sat Jun 02, 2018 7:53 pm
by hmgchang
Thanks KDJ...
Its all about '_'.....