2008-10-28 12:53 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/rtl/gtwvt/gtwvt.h
  * harbour/source/rtl/gtwvt/gtwvt.c
    + added support for creating console window after 1-st screen update
      Please remember that it interacts with inkey() code which does not
      work until windows is not created.
      Now it should be quite easy to add support for some initializations
      before window is created. Probably it will be necessary to change
      INFO() method and store settings in some pWVT variables if pWVT->hWND
      is NULL and then use them as parameters for new console window.
      I'd like to leave this modification to MS-Windows developers.

  * harbour/contrib/xhb/xhbcopyf.c
    ! fixed name conflict with hb_fsCopy()
This commit is contained in:
Przemyslaw Czerpak
2008-10-28 11:53:43 +00:00
parent bc6d7386f7
commit b22e96d54d
4 changed files with 183 additions and 132 deletions

View File

@@ -8,6 +8,21 @@
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2008-10-28 12:53 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
+ added support for creating console window after 1-st screen update
Please remember that it interacts with inkey() code which does not
work until windows is not created.
Now it should be quite easy to add support for some initializations
before window is created. Probably it will be necessary to change
INFO() method and store settings in some pWVT variables if pWVT->hWND
is NULL and then use them as parameters for new console window.
I'd like to leave this modification to MS-Windows developers.
* harbour/contrib/xhb/xhbcopyf.c
! fixed name conflict with hb_fsCopy()
2008-10-28 12:48 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbcurl/make_b32.bat
* contrib/hbcurl/make_vc.bat

View File

@@ -63,12 +63,12 @@
#define BUFFER_SIZE 8192
static BOOL hb_fsCopy( char * szSource, char * szDest, PHB_ITEM pBlock )
static BOOL hb_copyfile( char * szSource, char * szDest, PHB_ITEM pBlock )
{
BOOL bRetVal = FALSE;
HB_FHANDLE fhndSource;
HB_TRACE(HB_TR_DEBUG, ("hb_fsCopy(%s, %s)", szSource, szDest));
HB_TRACE(HB_TR_DEBUG, ("hb_copyfile(%s, %s)", szSource, szDest));
while( ( fhndSource = hb_spOpen( ( BYTE * ) szSource, FO_READ | FO_SHARED | FO_PRIVATE ) ) == FS_ERROR )
{
@@ -149,7 +149,7 @@ HB_FUNC( XHB_COPYFILE )
{
if( ISCHAR( 1 ) && ISCHAR( 2 ) )
{
if( ! hb_fsCopy( hb_parc( 1 ), hb_parc( 2 ), hb_param( 3, HB_IT_BLOCK ) ) )
if( ! hb_copyfile( hb_parc( 1 ), hb_parc( 2 ), hb_param( 3, HB_IT_BLOCK ) ) )
hb_retl( FALSE );
}
else

View File

@@ -13,7 +13,7 @@
* Copyright 2002 Przemyslaw Czerpak <druzus@polbox.com>
* Video subsystem for Win32 compilers
* Copyright 1999-2000 Paul Tucker <ptucker@sympatico.ca>
* Copyright 2002 Przemys³aw Czerpak <druzus@polbox.com>
* Copyright 2002 Przemyslaw Czerpak <druzus@polbox.com>
*
* Copyright 2006 Przemyslaw Czerpak <druzus /at/ priv.onet.pl>
* Adopted to new GT API
@@ -206,15 +206,12 @@ static void hb_gt_wvt_Free( PHB_GTWVT pWVT )
hb_xfree( pWVT->pszSelectCopy );
if( pWVT->hWnd )
{
DestroyWindow( pWVT->hWnd );
pWVT->hWnd = NULL;
}
hb_xfree( pWVT );
}
static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT )
static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT, HINSTANCE hInstance, int iCmdShow )
{
PHB_GTWVT pWVT;
OSVERSIONINFO osvi;
@@ -232,6 +229,9 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT )
return NULL;
}
pWVT->hInstance = ( HINSTANCE ) hInstance;
pWVT->iCmdShow = iCmdShow;
pWVT->ROWS = WVT_DEFAULT_ROWS;
pWVT->COLS = WVT_DEFAULT_COLS;
@@ -291,6 +291,19 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT )
pWVT->ResizeMode = HB_GTI_RESIZEMODE_FONT;
#ifndef HB_CDP_SUPPORT_OFF
pWVT->hostCDP = hb_vmCDP();
#if defined(UNICODE)
pWVT->inCDP = hb_vmCDP();
#else
{
int i;
for( i = 0; i < 256; ++i )
pWVT->chrTransTbl[ i ] = pWVT->keyTransTbl[ i ] = ( BYTE ) i;
}
#endif
#endif
return pWVT;
}
@@ -1464,7 +1477,7 @@ static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wPara
if( pWVT ) switch( message )
{
case WM_CREATE:
return hb_gt_wvt_InitWindow( pWVT, WVT_DEFAULT_ROWS, WVT_DEFAULT_COLS );
return hb_gt_wvt_InitWindow( pWVT, pWVT->ROWS, pWVT->COLS );
case WM_PAINT:
{
@@ -1683,12 +1696,41 @@ static HWND hb_gt_wvt_CreateWindow( HINSTANCE hInstance, int iCmdShow )
ShowWindow( hWnd, iCmdShow );
UpdateWindow( hWnd );
}
else
hb_errInternal( 10001, "Failed to create WVT window", NULL, NULL );
return hWnd;
}
static BOOL hb_gt_wvt_CreateConsoleWindow( PHB_GTWVT pWVT )
{
if( !pWVT->hWnd )
{
pWVT->hWnd = hb_gt_wvt_CreateWindow( pWVT->hInstance, pWVT->iCmdShow );
if( !pWVT->hWnd )
hb_errInternal( 10001, "Failed to create WVT window", NULL, NULL );
hb_gt_wvt_InitWindow( pWVT, pWVT->ROWS, pWVT->COLS );
/* Set default window title */
{
PHB_FNAME pFileName = hb_fsFNameSplit( hb_cmdargARGV()[ 0 ] );
hb_gt_wvt_SetWindowTitle( pWVT->hWnd, pFileName->szName );
hb_xfree( pFileName );
}
/* Create "Mark" prompt in SysMenu to allow console type copy operation */
{
HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, FALSE );
if( hSysMenu )
{
LPTSTR buffer = HB_TCHAR_CONVTO( pWVT->pszSelectCopy );
AppendMenu( hSysMenu, MF_STRING, SYS_EV_MARK, buffer );
HB_TCHAR_FREE( buffer );
}
}
}
return TRUE;
}
/* ********************************************************************** */
/*
@@ -1709,53 +1751,18 @@ static void hb_gt_wvt_Init( PHB_GT pGT, HB_FHANDLE hFilenoStdin, HB_FHANDLE hFil
hb_errInternal( 10001, "It's not a GUI program", NULL, NULL );
}
pWVT = hb_gt_wvt_New( pGT );
pWVT = hb_gt_wvt_New( pGT, ( HINSTANCE ) hInstance, iCmdShow );
if( !pWVT )
hb_errInternal( 10001, "Maximum number of WVT windows reached, cannot create another one", NULL, NULL );
HB_GTLOCAL( pGT ) = ( void * ) pWVT;
pWVT->hInstance = ( HINSTANCE ) hInstance;
pWVT->hWnd = hb_gt_wvt_CreateWindow( ( HINSTANCE ) hInstance, iCmdShow );
if( !pWVT->hWnd )
return;
hb_gt_wvt_InitWindow( pWVT, WVT_DEFAULT_ROWS, WVT_DEFAULT_COLS );
#ifndef HB_CDP_SUPPORT_OFF
pWVT->hostCDP = hb_vmCDP();
#if defined(UNICODE)
pWVT->inCDP = hb_vmCDP();
#else
{
int i;
for( i = 0; i < 256; ++i )
pWVT->chrTransTbl[ i ] = pWVT->keyTransTbl[ i ] = ( BYTE ) i;
}
#endif
#endif
/* Set default window title */
{
PHB_FNAME pFileName = hb_fsFNameSplit( hb_cmdargARGV()[ 0 ] );
hb_gt_wvt_SetWindowTitle( pWVT->hWnd, pFileName->szName );
hb_xfree( pFileName );
}
/* Create "Mark" prompt in SysMenu to allow console type copy operation */
{
HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, FALSE );
if( hSysMenu )
{
LPTSTR buffer = HB_TCHAR_CONVTO( pWVT->pszSelectCopy );
AppendMenu( hSysMenu, MF_STRING, SYS_EV_MARK, buffer );
HB_TCHAR_FREE( buffer );
}
}
/* SUPER GT initialization */
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSELF_RESIZE( pGT, pWVT->ROWS, pWVT->COLS );
HB_GTSELF_EXPOSEAREA( pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
HB_GTSELF_SEMICOLD( pGT );
/* hb_gt_wvt_CreateConsoleWindow( pWVT ); */
}
/* ********************************************************************** */
@@ -1808,6 +1815,7 @@ static BOOL hb_gt_wvt_SetMode( PHB_GT pGT, int iRow, int iCol )
else
{
hb_gt_wvt_SetWindowSize( pWVT, iRow, iCol );
HB_GTSELF_SEMICOLD( pGT );
}
}
@@ -1842,7 +1850,9 @@ static int hb_gt_wvt_ReadKey( PHB_GT pGT, int iEventMask )
pWVT = HB_GTWVT_GET( pGT );
hb_gt_wvt_ProcessMessages();
if( pWVT->hWnd ) /* Is the window already open */
hb_gt_wvt_ProcessMessages();
fKey = hb_gt_wvt_GetCharFromInputQueue( pWVT, &c );
return fKey ? c : 0;
@@ -2126,30 +2136,33 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
break;
}
case HB_GTI_WINTITLE:
{
char * szTitle = NULL;
if( hb_gt_wvt_GetWindowTitle( pWVT->hWnd, &szTitle ) )
pInfo->pResult = hb_itemPutCPtr2( pInfo->pResult, szTitle );
else
pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
hb_gt_wvt_SetWindowTitle( pWVT->hWnd, hb_itemGetCPtr( pInfo->pNewVal ) );
if( pWVT->hWnd )
{
char * szTitle = NULL;
if( hb_gt_wvt_GetWindowTitle( pWVT->hWnd, &szTitle ) )
pInfo->pResult = hb_itemPutCPtr2( pInfo->pResult, szTitle );
else
pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
hb_gt_wvt_SetWindowTitle( pWVT->hWnd, hb_itemGetCPtr( pInfo->pNewVal ) );
}
break;
}
case HB_GTI_CODEPAGE:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->CodePage );
iVal = hb_itemGetNI( pInfo->pNewVal );
if( iVal > 0 && iVal != pWVT->CodePage )
{
pWVT->CodePage = iVal;
hb_gt_wvt_ResetWindowSize( pWVT );
if( pWVT->hWnd )
hb_gt_wvt_ResetWindowSize( pWVT );
}
break;
case HB_GTI_ICONFILE:
{
HICON hIcon = 0;
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
if( ( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) && pWVT->hWnd )
{
LPTSTR lpImage = HB_TCHAR_CONVTO( hb_itemGetCPtr( pInfo->pNewVal ) );
hIcon = ( HICON ) LoadImage( ( HINSTANCE ) NULL, lpImage,
@@ -2168,24 +2181,27 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
case HB_GTI_ICONRES:
{
HICON hIcon = 0;
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
if( pWVT->hWnd )
{
LPTSTR lpIcon = HB_TCHAR_CONVTO( hb_itemGetCPtr( pInfo->pNewVal ) );
hIcon = LoadIcon( pWVT->hInstance, lpIcon );
HB_TCHAR_FREE( lpIcon );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
{
LPTSTR lpIcon = HB_TCHAR_CONVTO( hb_itemGetCPtr( pInfo->pNewVal ) );
hIcon = LoadIcon( pWVT->hInstance, lpIcon );
HB_TCHAR_FREE( lpIcon );
}
else if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC )
{
hIcon = LoadIcon( pWVT->hInstance,
MAKEINTRESOURCE( ( HB_LONG )
hb_itemGetNInt( pInfo->pNewVal ) ) );
}
if( hIcon )
{
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_SMALL, ( LPARAM ) hIcon ); /* Set Title Bar Icon */
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_BIG , ( LPARAM ) hIcon ); /* Set Task List Icon */
}
pInfo->pResult = hb_itemPutNInt( pInfo->pResult, ( HB_PTRDIFF ) hIcon );
}
else if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC )
{
hIcon = LoadIcon( pWVT->hInstance,
MAKEINTRESOURCE( ( HB_LONG )
hb_itemGetNInt( pInfo->pNewVal ) ) );
}
if( hIcon )
{
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_SMALL, ( LPARAM ) hIcon ); /* Set Title Bar Icon */
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_BIG , ( LPARAM ) hIcon ); /* Set Task List Icon */
}
pInfo->pResult = hb_itemPutNInt( pInfo->pResult, ( HB_PTRDIFF ) hIcon );
break;
}
case HB_GTI_VIEWMAXWIDTH:
@@ -2258,44 +2274,41 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
}
break;
}
case HB_GTI_RESIZABLE:
{
pInfo->pResult = hb_itemPutL( pInfo->pResult, pWVT->bResizable );
if( pInfo->pNewVal )
{
BOOL bNewValue = hb_itemGetL( pInfo->pNewVal );
if( bNewValue != pWVT->bResizable )
{
#if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_WINCE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT)
LONG style;
#else
LONG_PTR style;
#endif
pWVT->bResizable = bNewValue;
if( pWVT->bResizable )
style = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_THICKFRAME;
else
style = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_BORDER;
if( pWVT->hWnd )
{
#if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_WINCE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT)
LONG style;
#else
LONG_PTR style;
#endif
if( pWVT->bResizable )
style = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_THICKFRAME;
else
style = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_BORDER;
#if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_WINCE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT)
SetWindowLong( pWVT->hWnd, GWL_STYLE, style );
SetWindowLong( pWVT->hWnd, GWL_STYLE, style );
#else
SetWindowLongPtr( pWVT->hWnd, GWL_STYLE, style );
SetWindowLongPtr( pWVT->hWnd, GWL_STYLE, style );
#endif
SetWindowPos( pWVT->hWnd, NULL, 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DEFERERASE );
ShowWindow( pWVT->hWnd, SW_HIDE );
ShowWindow( pWVT->hWnd, SW_NORMAL );
SetWindowPos( pWVT->hWnd, NULL, 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DEFERERASE );
ShowWindow( pWVT->hWnd, SW_HIDE );
ShowWindow( pWVT->hWnd, SW_NORMAL );
}
}
}
break;
}
case HB_GTI_SELECTCOPY:
{
pInfo->pResult = hb_itemPutL( pInfo->pResult, pWVT->bSelectCopy );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
@@ -2304,8 +2317,8 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
if( hb_itemGetCLen( pInfo->pNewVal ) )
{
HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, FALSE );
if( hSysMenu )
HMENU hSysMenu = pWVT->hWnd ? GetSystemMenu( pWVT->hWnd, FALSE ) : NULL;
if( hSysMenu || !pWVT->hWnd )
{
if( pWVT->pszSelectCopy )
hb_xfree( pWVT->pszSelectCopy );
@@ -2313,6 +2326,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
pWVT->bSelectCopy = TRUE;
#if !defined(HB_WINCE) /* WinCE does not support ModifyMenu */
if( hSysMenu )
{
LPTSTR buffer;
buffer = HB_TCHAR_CONVTO( pWVT->pszSelectCopy );
@@ -2328,36 +2342,44 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
BOOL bNewValue = hb_itemGetL( pInfo->pNewVal );
if( bNewValue != pWVT->bSelectCopy )
{
HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, FALSE );
if( hSysMenu )
if( pWVT->hWnd )
{
EnableMenuItem( hSysMenu, SYS_EV_MARK, MF_BYCOMMAND | ( bNewValue ? MF_ENABLED : MF_GRAYED ) );
pWVT->bSelectCopy = bNewValue;
HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, FALSE );
if( hSysMenu )
{
EnableMenuItem( hSysMenu, SYS_EV_MARK, MF_BYCOMMAND | ( bNewValue ? MF_ENABLED : MF_GRAYED ) );
pWVT->bSelectCopy = bNewValue;
}
}
else
pWVT->bSelectCopy = bNewValue;
}
}
break;
}
case HB_GTI_CLOSABLE:
{
pInfo->pResult = hb_itemPutL( pInfo->pResult, pWVT->bClosable );
if( pInfo->pNewVal )
{
BOOL bNewValue = hb_itemGetL( pInfo->pNewVal );
if( bNewValue != pWVT->bClosable )
{
HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, FALSE );
if( hSysMenu )
if( pWVT->hWnd )
{
EnableMenuItem( hSysMenu, SC_CLOSE, MF_BYCOMMAND | ( bNewValue ? MF_ENABLED : MF_GRAYED ) );
pWVT->bClosable = bNewValue;
HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, FALSE );
if( hSysMenu )
{
EnableMenuItem( hSysMenu, SC_CLOSE, MF_BYCOMMAND | ( bNewValue ? MF_ENABLED : MF_GRAYED ) );
pWVT->bClosable = bNewValue;
}
}
else
pWVT->bClosable = bNewValue;
}
}
break;
}
case HB_GTI_PALETTE:
{
if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC )
{
int iIndex = hb_itemGetNI( pInfo->pNewVal );
@@ -2370,7 +2392,8 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
pWVT->COLORS[ iIndex - 1 ] = hb_itemGetNL( pInfo->pNewVal2 );
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
if( pWVT->hWnd )
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
}
}
}
@@ -2392,25 +2415,25 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
for( i = 0; i < 16; i++ )
pWVT->COLORS[ i ] = hb_arrayGetNL( pInfo->pNewVal, i + 1 );
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
if( pWVT->hWnd )
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
}
}
}
break;
}
case HB_GTI_RESIZEMODE:
{
pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->ResizeMode );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC )
{
pWVT->ResizeMode = hb_itemGetNI( pInfo->pNewVal );
}
break;
}
case HB_GTI_SETPOS_XY:
case HB_GTI_SETPOS_ROWCOL:
{
if( ( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) && ( hb_itemType( pInfo->pNewVal2 ) & HB_IT_NUMERIC ) )
if( pWVT->hWnd && ( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) &&
( hb_itemType( pInfo->pNewVal2 ) & HB_IT_NUMERIC ) )
{
int x, y;
RECT rect = { 0,0,0,0 };
@@ -2431,7 +2454,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
SWP_NOSIZE + SWP_NOZORDER ) );
}
break;
}
default:
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
@@ -2612,17 +2635,22 @@ static void hb_gt_wvt_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
pWVT = HB_GTWVT_GET( pGT );
if( pWVT && pWVT->hWnd )
if( pWVT )
{
RECT rect;
if( pWVT->hWnd )
{
RECT rect;
rect.top = rect.bottom = ( SHORT ) iRow;
rect.left = ( SHORT ) iCol;
rect.right = ( SHORT ) ( iCol + iSize - 1 );
rect.top = rect.bottom = ( SHORT ) iRow;
rect.left = ( SHORT ) iCol;
rect.right = ( SHORT ) ( iCol + iSize - 1 );
rect = hb_gt_wvt_GetXYFromColRowRect( pWVT, rect );
rect = hb_gt_wvt_GetXYFromColRowRect( pWVT, rect );
InvalidateRect( pWVT->hWnd, &rect, FALSE );
InvalidateRect( pWVT->hWnd, &rect, FALSE );
}
else
pWVT->fInit = TRUE;
}
}
@@ -2637,10 +2665,16 @@ static void hb_gt_wvt_Refresh( PHB_GT pGT )
HB_GTSUPER_REFRESH( pGT );
pWVT = HB_GTWVT_GET( pGT );
if( pWVT && pWVT->hWnd )
if( pWVT )
{
SendNotifyMessage( pWVT->hWnd, WM_MY_UPDATE_CARET, 0, 0 );
hb_gt_wvt_ProcessMessages();
if( !pWVT->hWnd && pWVT->fInit )
hb_gt_wvt_CreateConsoleWindow( pWVT );
if( pWVT->hWnd )
{
SendNotifyMessage( pWVT->hWnd, WM_MY_UPDATE_CARET, 0, 0 );
hb_gt_wvt_ProcessMessages();
}
}
}

View File

@@ -117,6 +117,7 @@ typedef struct
int iHandle; /* window number */
HINSTANCE hInstance; /* parent window instance */
int iCmdShow;
USHORT ROWS; /* number of displayable rows in window */
USHORT COLS; /* number of displayable columns in window */
@@ -146,6 +147,7 @@ typedef struct
HFONT hFont; /* current font handle */
HWND hWnd; /* the window handle */
BOOL fInit; /* logical variable indicating that window should be open */
PHB_CODEPAGE hostCDP; /* Host/HVM CodePage for unicode output translations */
PHB_CODEPAGE inCDP; /* Host/HVM CodePage for unicode input translations */