isWindowDefined() value

Moderator: Rathinagiri

Post Reply
User avatar
hmgchang
Posts: 273
Joined: Tue Aug 13, 2013 4:46 am
Location: Indonesia

isWindowDefined() value

Post 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 1428 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
Just Hmg It !
KDJ
Posts: 243
Joined: Mon Sep 05, 2016 3:04 am
Location: Poland

Re: isWindowDefined() value

Post by KDJ »

Chang

Code: Select all

FUNCTION CloseWin(cWin)
  msgDebug(cWin, IsWindowDefined(&cWin), _IsWindowDefined("Win2"))
  IF IsWindowDefined(&cWin)
    DoMethod(cWin, "Release")
  ENDIF
  RETURN NIL
User avatar
hmgchang
Posts: 273
Joined: Tue Aug 13, 2013 4:46 am
Location: Indonesia

Re: isWindowDefined() value

Post by hmgchang »

Thanks KDJ...
Its all about '_'.....
Just Hmg It !
Post Reply