2006-02-08 18:02 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/rtl/gtwin/gtwin.c
    + added PreExt() and PostExt() methods
This commit is contained in:
Przemyslaw Czerpak
2006-02-08 17:03:58 +00:00
parent e81317ba4d
commit 146acaa4bd
2 changed files with 53 additions and 20 deletions

View File

@@ -8,6 +8,10 @@
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
* fixed <-x-> match marker
2006-02-08 18:02 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtwin/gtwin.c
+ added PreExt() and PostExt() methods
2006-02-08 15:17 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/dbcmd.c
! warning I introduced in last commit cleanup

View File

@@ -150,6 +150,7 @@ static USHORT s_usUpdtBottom;
static USHORT s_usUpdtLeft;
static USHORT s_usUpdtRight;
static CHAR_INFO * s_pCharInfoScreen = NULL;
static ULONG s_ulScreenBuffSize = 0;
static FHANDLE s_hStdIn, s_hStdOut, s_hStdErr;
@@ -560,29 +561,36 @@ static void hb_gt_win_xInitScreenParam( void )
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_xInitScreenParam()"));
if( s_pCharInfoScreen != NULL )
{
hb_xfree( s_pCharInfoScreen );
s_pCharInfoScreen = NULL;
}
if( GetConsoleScreenBufferInfo( s_HOutput, &s_csbi ) )
s_pCharInfoScreen = ( CHAR_INFO * ) hb_xgrab( _GetScreenWidth() *
_GetScreenHeight() *
sizeof( CHAR_INFO ) );
s_sCurRow = s_csbi.dwCursorPosition.Y;
s_sCurCol = s_csbi.dwCursorPosition.X;
s_usUpdtTop = _GetScreenHeight();
s_usUpdtLeft = _GetScreenWidth();
s_usUpdtBottom = s_usUpdtRight = 0;
{
ULONG ulSize = ( ULONG ) _GetScreenWidth() * _GetScreenHeight() *
sizeof( CHAR_INFO );
/* read the screen rectangle into the buffer */
if( s_pCharInfoScreen != NULL )
if( s_pCharInfoScreen == NULL || ulSize != s_ulScreenBuffSize )
{
if( s_pCharInfoScreen != NULL )
hb_xfree( s_pCharInfoScreen );
s_ulScreenBuffSize = ulSize;
s_pCharInfoScreen = ( CHAR_INFO * ) hb_xgrab( s_ulScreenBuffSize );
}
s_sCurRow = s_csbi.dwCursorPosition.Y;
s_sCurCol = s_csbi.dwCursorPosition.X;
s_usUpdtTop = _GetScreenHeight();
s_usUpdtLeft = _GetScreenWidth();
s_usUpdtBottom = s_usUpdtRight = 0;
/* read the screen rectangle into the buffer */
ReadConsoleOutput( s_HOutput, /* screen handle */
s_pCharInfoScreen, /* transfer area */
s_csbi.dwSize, /* size of destination buffer */
coDest, /* upper-left cell to write data to */
&s_csbi.srWindow ); /* screen buffer rectangle to read from */
}
else if( s_pCharInfoScreen != NULL )
{
hb_xfree( s_pCharInfoScreen );
s_ulScreenBuffSize = 0;
}
HB_GTSUPER_RESIZE( _GetScreenHeight(), _GetScreenWidth() );
}
@@ -789,6 +797,26 @@ static char * hb_gt_win_Version( int iType )
/* *********************************************************************** */
static BOOL hb_gt_win_PreExt()
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_PreExt()"));
return TRUE;
}
static BOOL hb_gt_win_PostExt()
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_PostExt()"));
hb_gt_win_xInitScreenParam();
hb_gt_win_xGetScreenContents();
hb_gt_SetPos( s_sCurRow, s_sCurCol );
return TRUE;
}
/* *********************************************************************** */
static BOOL hb_gt_win_Suspend()
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Suspend()"));
@@ -804,8 +832,6 @@ static BOOL hb_gt_win_Suspend()
return TRUE;
}
/* *********************************************************************** */
static BOOL hb_gt_win_Resume()
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Resume()"));
@@ -815,8 +841,9 @@ static BOOL hb_gt_win_Resume()
SetConsoleMode( s_HInput, s_dwimode );
SetConsoleMode( s_HOutput, s_dwomode );
hb_gt_win_xSetCursorStyle();
/* hb_gt_win_xGetScreenContents(); */
/* hb_gt_SetPos( s_sCurRow, s_sCurCol ); */
hb_gt_win_xInitScreenParam();
hb_gt_win_xGetScreenContents();
hb_gt_SetPos( s_sCurRow, s_sCurCol );
return TRUE;
}
@@ -1796,6 +1823,8 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable )
pFuncTable->Redraw = hb_gt_win_Redraw;
pFuncTable->Refresh = hb_gt_win_Refresh;
pFuncTable->Version = hb_gt_win_Version;
pFuncTable->PreExt = hb_gt_win_PreExt;
pFuncTable->PostExt = hb_gt_win_PostExt;
pFuncTable->Suspend = hb_gt_win_Suspend;
pFuncTable->Resume = hb_gt_win_Resume;
pFuncTable->Tone = hb_gt_win_Tone;