2008-11-02 00:40 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* harbour/contrib/gtwvg/gtwvg.c
* harbour/contrib/gtwvg/gtwvg.h
* harbour/contrib/gtwvg/hbgtwvg.ch
* harbour/contrib/gtwvg/wvgpaint.prg
! Synchronized with GTWVT.
+ Added HB_GTI_* hb_gtInfo() constants:
HB_GTI_PRESPARAMS // provides mechanism to configure windows appearance and behavior
HB_GTI_ENABLE // enables window to receive input focus with specified GT
HB_GTI_DISABLE // disables window to accept input focus with specified GT
HB_GTI_SETFOCUS // sets the input focus to specified GT
+ Added HB_GT_PP structure supporting design-time presentation
parameters via HB_GTI_PRESPARAMS:
HB_GTI_PP_EXSTYLE // extended style of the window
HB_GTI_PP_STYLE // normal style of the window
HB_GTI_PP_X // left position by pixel | top position by row
HB_GTI_PP_Y // top position by pixel | left position by col
HB_GTI_PP_WIDTH // width of the window by pixel | number of rows in window
HB_GTI_PP_HEIGHT // height of the window by pixel | number of columns in window
HB_GTI_PP_PARENT // parent GT if window needs to be modal and/or other usage
HB_GTI_PP_VISIBLE // flag to specify if the window is made visible immediate after this call
HB_GTI_PP_ROWCOLS // flag to interpret X,Y,WIDTH,HEIGHT as Top,Left,Rows,Cols
;IMPLEMENTS the behavioral changes to current GT window invoked
either by hb_gtCreate() or hb_gtSelect() functions by specifying
an array of 9 elements ( bound to increase in future ) via
hb_gtInfo( HB_GTI_PRESPARAMS, aPresParams ) where <aPresParams>
contains elements described as above:
1. ExStyle N [D] 0
2. Style N WS_OVERLAPPEDWINDOW
3. x[pxl] top[row] N 0
4. y[pxl] left[col] N 0
5. width[pxl] rows[row] N CW_USEDEFAULT
6. height[pxl] cols[col] N CW_USEDEFAULT
7. Parent GT P NIL
8. Visibility L FALSE
9. RowCols L FALSE
<aPresParams> must be passed with all 9 elements even if
you want only few to be changed.
* harbour/contrib/gtwvg/tests/demowvg.prg
! Updated to demonstrate above concept to show up a modal dialog in the
same thread on top of a threaded window. Try to click on the parent window.
<Traditional><Browser><F3> will show up this modal dialog.
;NOTE : Please do not use literals to define members, always use
#defines from hbgtwvg.ch as it is a work in progress and is possible
that few of the definitions may change in future.
This commit is contained in:
@@ -8,6 +8,58 @@
|
||||
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2008-11-02 00:40 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* harbour/contrib/gtwvg/gtwvg.c
|
||||
* harbour/contrib/gtwvg/gtwvg.h
|
||||
* harbour/contrib/gtwvg/hbgtwvg.ch
|
||||
* harbour/contrib/gtwvg/wvgpaint.prg
|
||||
|
||||
! Synchronized with GTWVT.
|
||||
|
||||
+ Added HB_GTI_* hb_gtInfo() constants:
|
||||
HB_GTI_PRESPARAMS // provides mechanism to configure windows appearance and behavior
|
||||
HB_GTI_ENABLE // enables window to receive input focus with specified GT
|
||||
HB_GTI_DISABLE // disables window to accept input focus with specified GT
|
||||
HB_GTI_SETFOCUS // sets the input focus to specified GT
|
||||
|
||||
+ Added HB_GT_PP structure supporting design-time presentation
|
||||
parameters via HB_GTI_PRESPARAMS:
|
||||
HB_GTI_PP_EXSTYLE // extended style of the window
|
||||
HB_GTI_PP_STYLE // normal style of the window
|
||||
HB_GTI_PP_X // left position by pixel | top position by row
|
||||
HB_GTI_PP_Y // top position by pixel | left position by col
|
||||
HB_GTI_PP_WIDTH // width of the window by pixel | number of rows in window
|
||||
HB_GTI_PP_HEIGHT // height of the window by pixel | number of columns in window
|
||||
HB_GTI_PP_PARENT // parent GT if window needs to be modal and/or other usage
|
||||
HB_GTI_PP_VISIBLE // flag to specify if the window is made visible immediate after this call
|
||||
HB_GTI_PP_ROWCOLS // flag to interpret X,Y,WIDTH,HEIGHT as Top,Left,Rows,Cols
|
||||
|
||||
;IMPLEMENTS the behavioral changes to current GT window invoked
|
||||
either by hb_gtCreate() or hb_gtSelect() functions by specifying
|
||||
an array of 9 elements ( bound to increase in future ) via
|
||||
hb_gtInfo( HB_GTI_PRESPARAMS, aPresParams ) where <aPresParams>
|
||||
contains elements described as above:
|
||||
1. ExStyle N [D] 0
|
||||
2. Style N WS_OVERLAPPEDWINDOW
|
||||
3. x[pxl] top[row] N 0
|
||||
4. y[pxl] left[col] N 0
|
||||
5. width[pxl] rows[row] N CW_USEDEFAULT
|
||||
6. height[pxl] cols[col] N CW_USEDEFAULT
|
||||
7. Parent GT P NIL
|
||||
8. Visibility L FALSE
|
||||
9. RowCols L FALSE
|
||||
<aPresParams> must be passed with all 9 elements even if
|
||||
you want only few to be changed.
|
||||
|
||||
* harbour/contrib/gtwvg/tests/demowvg.prg
|
||||
! Updated to demonstrate above concept to show up a modal dialog in the
|
||||
same thread on top of a threaded window. Try to click on the parent window.
|
||||
<Traditional><Browser><F3> will show up this modal dialog.
|
||||
|
||||
;NOTE : Please do not use literals to define members, always use
|
||||
#defines from hbgtwvg.ch as it is a work in progress and is possible
|
||||
that few of the definitions may change in future.
|
||||
|
||||
2008-11-02 07:39 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
|
||||
* source/rtl/version.c
|
||||
! Added missing header from previous change.
|
||||
|
||||
@@ -97,7 +97,7 @@ static HB_CRITICAL_NEW( s_wvtMtx );
|
||||
#define HB_WVT_LOCK hb_threadEnterCriticalSection( &s_wvtMtx );
|
||||
#define HB_WVT_UNLOCK hb_threadLeaveCriticalSection( &s_wvtMtx );
|
||||
|
||||
static PHB_GTWVT s_wvtWindows[WVT_MAX_WINDOWS];
|
||||
static PHB_GTWVT s_wvtWindows[ WVT_MAX_WINDOWS ];
|
||||
static int s_wvtCount = 0;
|
||||
|
||||
static const TCHAR s_szClassName[] = TEXT( "Harbour_WVG_Class" );
|
||||
@@ -129,13 +129,13 @@ static void hb_gt_wvt_RegisterClass( HINSTANCE hInstance )
|
||||
memset( &wndclass, 0, sizeof( WNDCLASS ) );
|
||||
wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
|
||||
wndclass.lpfnWndProc = hb_gt_wvt_WndProc;
|
||||
/* wndclass.cbClsExtra = 0; */
|
||||
/* wndclass.cbWndExtra = 0; */
|
||||
/* wndclass.cbClsExtra = 0; */
|
||||
/* wndclass.cbWndExtra = 0; */
|
||||
wndclass.hInstance = hInstance;
|
||||
/* wndclass.hIcon = NULL; */
|
||||
/* wndclass.hIcon = 0; */
|
||||
wndclass.hCursor = LoadCursor( NULL, IDC_ARROW );
|
||||
/* wndclass.hbrBackground = NULL; */
|
||||
/* wndclass.lpszMenuName = NULL; */
|
||||
/* wndclass.hbrBackground = NULL; */
|
||||
/* wndclass.lpszMenuName = NULL; */
|
||||
wndclass.lpszClassName = s_szClassName;
|
||||
|
||||
if( ! RegisterClass( &wndclass ) )
|
||||
@@ -151,11 +151,11 @@ static PHB_GTWVT hb_gt_wvt_Find( HWND hWnd )
|
||||
|
||||
while( iCount && iPos < WVT_MAX_WINDOWS )
|
||||
{
|
||||
if( s_wvtWindows[iPos] )
|
||||
if( s_wvtWindows[ iPos ] )
|
||||
{
|
||||
if( s_wvtWindows[iPos]->hWnd == hWnd )
|
||||
if( s_wvtWindows[ iPos ]->hWnd == hWnd )
|
||||
{
|
||||
pWVT = s_wvtWindows[iPos];
|
||||
pWVT = s_wvtWindows[ iPos ];
|
||||
break;
|
||||
}
|
||||
--iCount;
|
||||
@@ -179,9 +179,9 @@ static BOOL hb_gt_wvt_Alloc( PHB_GTWVT pWVT )
|
||||
int iPos = 0;
|
||||
do
|
||||
{
|
||||
if( s_wvtWindows[iPos] == NULL )
|
||||
if( s_wvtWindows[ iPos ] == NULL )
|
||||
{
|
||||
s_wvtWindows[iPos] = pWVT;
|
||||
s_wvtWindows[ iPos ] = pWVT;
|
||||
pWVT->iHandle = iPos;
|
||||
if( ++s_wvtCount == 1 )
|
||||
hb_gt_wvt_RegisterClass( pWVT->hInstance );
|
||||
@@ -204,7 +204,7 @@ static void hb_gt_wvt_Free( PHB_GTWVT pWVT )
|
||||
|
||||
HB_WVT_LOCK
|
||||
|
||||
s_wvtWindows[pWVT->iHandle] = NULL;
|
||||
s_wvtWindows[ pWVT->iHandle ] = NULL;
|
||||
|
||||
if( --s_wvtCount == 0 )
|
||||
{
|
||||
@@ -238,11 +238,14 @@ static void hb_gt_wvt_Free( PHB_GTWVT pWVT )
|
||||
}
|
||||
}
|
||||
|
||||
hb_itemRelease( pWVT->pPP->pParentGT );
|
||||
hb_xfree( pWVT->pPP );
|
||||
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
DestroyWindow( pWVT->hWnd );
|
||||
pWVT->hWnd = NULL;
|
||||
}
|
||||
|
||||
if( pWVT->hIcon && pWVT->bIconToFree )
|
||||
DestroyIcon( pWVT->hIcon );
|
||||
|
||||
hb_xfree( pWVT );
|
||||
}
|
||||
@@ -298,8 +301,9 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT, HINSTANCE hInstance, int iCmdShow )
|
||||
hb_strncpy( pWVT->fontFace, WVT_DEFAULT_FONT_NAME, sizeof( pWVT->fontFace ) - 1 );
|
||||
|
||||
pWVT->CaretExist = FALSE;
|
||||
pWVT->CaretHidden = FALSE;
|
||||
pWVT->CaretSize = HB_MAX( ( pWVT->PTEXTSIZE.y >> 2 ) - 1, 1 );
|
||||
pWVT->CaretHidden = TRUE;
|
||||
pWVT->CaretSize = 0;
|
||||
pWVT->CaretWidth = 0;
|
||||
pWVT->MousePos.x = 0;
|
||||
pWVT->MousePos.y = 0;
|
||||
pWVT->MouseMove = TRUE;
|
||||
@@ -327,6 +331,18 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT, HINSTANCE hInstance, int iCmdShow )
|
||||
|
||||
pWVT->ResizeMode = HB_GTI_RESIZEMODE_FONT;
|
||||
|
||||
pWVT->pPP = ( HB_GT_PARAMS * ) hb_xgrab( sizeof( HB_GT_PARAMS ) );
|
||||
pWVT->pPP->style = WS_THICKFRAME|WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX;
|
||||
pWVT->pPP->exStyle = 0;
|
||||
pWVT->pPP->x = 0;
|
||||
pWVT->pPP->y = 0;
|
||||
pWVT->pPP->width = CW_USEDEFAULT;
|
||||
pWVT->pPP->height = CW_USEDEFAULT;
|
||||
pWVT->pPP->pParentGT = NULL;
|
||||
pWVT->pPP->bVisible = FALSE;
|
||||
pWVT->pPP->bConfigured = FALSE;
|
||||
pWVT->pPP->bRowCols = FALSE;
|
||||
|
||||
#ifndef HB_CDP_SUPPORT_OFF
|
||||
pWVT->hostCDP = hb_vmCDP();
|
||||
#if defined(UNICODE)
|
||||
@@ -367,18 +383,6 @@ static int hb_gt_wvt_FireEvent( PHB_GTWVT pWVT, int nEvent )
|
||||
return nResult;
|
||||
}
|
||||
|
||||
static BOOL hb_gt_wvt_SetWindowSize( PHB_GTWVT pWVT, int iRow, int iCol )
|
||||
{
|
||||
if( HB_GTSELF_RESIZE( pWVT->pGT, iRow, iCol ) )
|
||||
{
|
||||
pWVT->ROWS = ( USHORT ) iRow;
|
||||
pWVT->COLS = ( USHORT ) iCol;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* use the standard fixed oem font, unless the caller has requested set size fonts
|
||||
*/
|
||||
@@ -397,11 +401,11 @@ static HFONT hb_gt_wvt_GetFont( const char * pszFace, int iHeight, int iWidth, i
|
||||
logfont.lfItalic = 0;
|
||||
logfont.lfUnderline = 0;
|
||||
logfont.lfStrikeOut = 0;
|
||||
logfont.lfCharSet = ( BYTE ) iCodePage; /* OEM_CHARSET; */
|
||||
logfont.lfCharSet = ( BYTE ) iCodePage; /* OEM_CHARSET */
|
||||
logfont.lfOutPrecision = 0;
|
||||
logfont.lfClipPrecision = 0;
|
||||
logfont.lfQuality = ( BYTE ) iQuality; /* DEFAULT_QUALITY, DRAFT_QUALITY or PROOF_QUALITY */
|
||||
logfont.lfPitchAndFamily = FIXED_PITCH+FF_MODERN; /* all mapping depends on fixed width fonts! */
|
||||
logfont.lfQuality = ( BYTE ) iQuality; /* DEFAULT_QUALITY, DRAFT_QUALITY or PROOF_QUALITY */
|
||||
logfont.lfPitchAndFamily = FIXED_PITCH + FF_MODERN; /* all mapping depends on fixed width fonts! */
|
||||
logfont.lfHeight = iHeight;
|
||||
logfont.lfWidth = iWidth < 0 ? -iWidth : iWidth;
|
||||
|
||||
@@ -478,9 +482,11 @@ static void hb_gt_wvt_UpdateCaret( PHB_GTWVT pWVT )
|
||||
}
|
||||
else
|
||||
{
|
||||
if( iCaretSize != pWVT->CaretSize || !pWVT->CaretExist )
|
||||
if( iCaretSize != pWVT->CaretSize || pWVT->PTEXTSIZE.x != pWVT->CaretWidth ||
|
||||
!pWVT->CaretExist )
|
||||
{
|
||||
pWVT->CaretSize = iCaretSize;
|
||||
pWVT->CaretWidth = pWVT->PTEXTSIZE.x;
|
||||
pWVT->CaretExist = CreateCaret( pWVT->hWnd, ( HBITMAP ) NULL, pWVT->PTEXTSIZE.x,
|
||||
pWVT->CaretSize < 0 ? - pWVT->CaretSize : pWVT->CaretSize );
|
||||
}
|
||||
@@ -505,7 +511,6 @@ static void hb_gt_wvt_KillCaret( PHB_GTWVT pWVT )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void hb_gt_wvt_ResetWindowSize( PHB_GTWVT pWVT )
|
||||
{
|
||||
HDC hdc;
|
||||
@@ -520,13 +525,12 @@ static void hb_gt_wvt_ResetWindowSize( PHB_GTWVT pWVT )
|
||||
* set the font and get it's size to determine the size of the client area
|
||||
* for the required number of rows and columns
|
||||
*/
|
||||
hdc = GetDC( pWVT->hWnd );
|
||||
hFont = hb_gt_wvt_GetFont( pWVT->fontFace, pWVT->fontHeight, pWVT->fontWidth,
|
||||
pWVT->fontWeight, pWVT->fontQuality, pWVT->CodePage );
|
||||
|
||||
if( pWVT->hFont )
|
||||
DeleteObject( pWVT->hFont );
|
||||
pWVT->hFont = hFont;
|
||||
hdc = GetDC( pWVT->hWnd );
|
||||
hOldFont = ( HFONT ) SelectObject( hdc, hFont );
|
||||
GetTextMetrics( hdc, &tm );
|
||||
SetTextCharacterExtra( hdc, 0 ); /* do not add extra char spacing even if bold */
|
||||
@@ -565,9 +569,6 @@ static void hb_gt_wvt_ResetWindowSize( PHB_GTWVT pWVT )
|
||||
width += ( USHORT ) ( wi.right - wi.left - ci.right );
|
||||
height += ( USHORT ) ( wi.bottom - wi.top - ci.bottom );
|
||||
|
||||
hb_gt_wvt_KillCaret( pWVT );
|
||||
hb_gt_wvt_UpdateCaret( pWVT );
|
||||
|
||||
/*
|
||||
* Centre the window within the CLIENT area on the screen
|
||||
* but only if pWVT->CentreWindow == TRUE
|
||||
@@ -578,8 +579,12 @@ static void hb_gt_wvt_ResetWindowSize( PHB_GTWVT pWVT )
|
||||
wi.top = rcWorkArea.top + ( ( rcWorkArea.bottom - rcWorkArea.top - height ) / 2 );
|
||||
}
|
||||
SetWindowPos( pWVT->hWnd, NULL, wi.left, wi.top, width, height, SWP_NOZORDER );
|
||||
|
||||
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
|
||||
|
||||
if( pWVT->CaretExist && !pWVT->CaretHidden )
|
||||
hb_gt_wvt_UpdateCaret( pWVT );
|
||||
|
||||
if( pWVT->bGui )
|
||||
{
|
||||
hb_wvt_gtInitGui( pWVT );
|
||||
@@ -614,7 +619,7 @@ static void hb_gt_wvt_FitRows( PHB_GTWVT pWVT )
|
||||
maxHeight = ci.bottom - ci.top;
|
||||
}
|
||||
|
||||
if ( maxHeight > 0 )
|
||||
if( maxHeight > 0 )
|
||||
{
|
||||
BOOL bOldCentre = pWVT->CentreWindow;
|
||||
pWVT->CentreWindow = pWVT->bMaximized ? TRUE : FALSE;
|
||||
@@ -724,10 +729,10 @@ static void hb_gt_wvt_FitSize( PHB_GTWVT pWVT )
|
||||
top = ( top < 0 ? 0 : top );
|
||||
}
|
||||
|
||||
hb_gt_wvt_KillCaret( pWVT );
|
||||
hb_gt_wvt_UpdateCaret( pWVT );
|
||||
|
||||
SetWindowPos( pWVT->hWnd, NULL, left, top, width, height, SWP_NOZORDER );
|
||||
|
||||
if( pWVT->CaretExist && !pWVT->CaretHidden )
|
||||
hb_gt_wvt_UpdateCaret( pWVT );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -767,6 +772,18 @@ static BOOL hb_gt_wvt_GetWindowTitle( HWND hWnd, char ** title )
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL hb_gt_wvt_SetWindowSize( PHB_GTWVT pWVT, int iRow, int iCol )
|
||||
{
|
||||
if( HB_GTSELF_RESIZE( pWVT->pGT, iRow, iCol ) )
|
||||
{
|
||||
pWVT->ROWS = ( USHORT ) iRow;
|
||||
pWVT->COLS = ( USHORT ) iCol;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL hb_gt_wvt_InitWindow( PHB_GTWVT pWVT, int iRow, int iCol )
|
||||
{
|
||||
BOOL fRet = hb_gt_wvt_SetWindowSize( pWVT, iRow, iCol );
|
||||
@@ -903,9 +920,6 @@ static void hb_gt_wvt_SetMousePos( PHB_GTWVT pWVT, int iRow, int iCol )
|
||||
|
||||
static void hb_gt_wvt_MouseEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
static RECT s_rectOld = { 0, 0, 0, 0 };
|
||||
static RECT s_rectNew = { 0, 0, 0, 0 };
|
||||
|
||||
POINT xy, colrow;
|
||||
SHORT keyCode = 0;
|
||||
SHORT keyState;
|
||||
@@ -937,15 +951,15 @@ static void hb_gt_wvt_MouseEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam, L
|
||||
{
|
||||
pWVT->bBeingMarked = TRUE;
|
||||
|
||||
s_rectNew.left = xy.x;
|
||||
s_rectNew.top = xy.y;
|
||||
s_rectNew.right = xy.x;
|
||||
s_rectNew.bottom = xy.y;
|
||||
pWVT->sRectNew.left = xy.x;
|
||||
pWVT->sRectNew.top = xy.y;
|
||||
pWVT->sRectNew.right = xy.x;
|
||||
pWVT->sRectNew.bottom = xy.y;
|
||||
|
||||
s_rectOld.left = 0;
|
||||
s_rectOld.top = 0;
|
||||
s_rectOld.right = 0;
|
||||
s_rectOld.bottom = 0;
|
||||
pWVT->sRectOld.left = 0;
|
||||
pWVT->sRectOld.top = 0;
|
||||
pWVT->sRectOld.right = 0;
|
||||
pWVT->sRectOld.bottom = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -979,10 +993,10 @@ static void hb_gt_wvt_MouseEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam, L
|
||||
RECT rect = { 0, 0, 0, 0 };
|
||||
RECT colrowRC = { 0, 0, 0, 0 };
|
||||
|
||||
rect.left = HB_MIN( s_rectNew.left, s_rectNew.right );
|
||||
rect.top = HB_MIN( s_rectNew.top , s_rectNew.bottom );
|
||||
rect.right = HB_MAX( s_rectNew.left, s_rectNew.right );
|
||||
rect.bottom = HB_MAX( s_rectNew.top , s_rectNew.bottom );
|
||||
rect.left = HB_MIN( pWVT->sRectNew.left, pWVT->sRectNew.right );
|
||||
rect.top = HB_MIN( pWVT->sRectNew.top , pWVT->sRectNew.bottom );
|
||||
rect.right = HB_MAX( pWVT->sRectNew.left, pWVT->sRectNew.right );
|
||||
rect.bottom = HB_MAX( pWVT->sRectNew.top , pWVT->sRectNew.bottom );
|
||||
|
||||
colrowRC = hb_gt_wvt_GetColRowFromXYRect( pWVT, rect );
|
||||
|
||||
@@ -1049,25 +1063,25 @@ static void hb_gt_wvt_MouseEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam, L
|
||||
RECT rect = { 0, 0, 0, 0 };
|
||||
RECT colrowRC = { 0, 0, 0, 0 };
|
||||
|
||||
s_rectNew.right = xy.x;
|
||||
s_rectNew.bottom = xy.y;
|
||||
pWVT->sRectNew.right = xy.x;
|
||||
pWVT->sRectNew.bottom = xy.y;
|
||||
|
||||
rect.left = HB_MIN( s_rectNew.left, s_rectNew.right );
|
||||
rect.top = HB_MIN( s_rectNew.top , s_rectNew.bottom );
|
||||
rect.right = HB_MAX( s_rectNew.left, s_rectNew.right );
|
||||
rect.bottom = HB_MAX( s_rectNew.top , s_rectNew.bottom );
|
||||
rect.left = HB_MIN( pWVT->sRectNew.left, pWVT->sRectNew.right );
|
||||
rect.top = HB_MIN( pWVT->sRectNew.top , pWVT->sRectNew.bottom );
|
||||
rect.right = HB_MAX( pWVT->sRectNew.left, pWVT->sRectNew.right );
|
||||
rect.bottom = HB_MAX( pWVT->sRectNew.top , pWVT->sRectNew.bottom );
|
||||
|
||||
colrowRC = hb_gt_wvt_GetColRowFromXYRect( pWVT, rect );
|
||||
rect = hb_gt_wvt_GetXYFromColRowRect( pWVT, colrowRC );
|
||||
|
||||
if( rect.left != s_rectOld.left ||
|
||||
rect.top != s_rectOld.top ||
|
||||
rect.right != s_rectOld.right ||
|
||||
rect.bottom != s_rectOld.bottom )
|
||||
if( rect.left != pWVT->sRectOld.left ||
|
||||
rect.top != pWVT->sRectOld.top ||
|
||||
rect.right != pWVT->sRectOld.right ||
|
||||
rect.bottom != pWVT->sRectOld.bottom )
|
||||
{
|
||||
#if !defined(HB_WINCE) /* WinCE does not support InvertRgn */
|
||||
/* Concept forwarded by Andy Wos - thanks. */
|
||||
HRGN rgn1 = CreateRectRgn( s_rectOld.left, s_rectOld.top, s_rectOld.right, s_rectOld.bottom );
|
||||
HRGN rgn1 = CreateRectRgn( pWVT->sRectOld.left, pWVT->sRectOld.top, pWVT->sRectOld.right, pWVT->sRectOld.bottom );
|
||||
HRGN rgn2 = CreateRectRgn( rect.left, rect.top, rect.right, rect.bottom );
|
||||
HRGN rgn3 = CreateRectRgn( 0, 0, 0, 0 );
|
||||
|
||||
@@ -1082,10 +1096,10 @@ static void hb_gt_wvt_MouseEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam, L
|
||||
DeleteObject( rgn2 );
|
||||
DeleteObject( rgn3 );
|
||||
#endif
|
||||
s_rectOld.left = rect.left;
|
||||
s_rectOld.top = rect.top;
|
||||
s_rectOld.right = rect.right;
|
||||
s_rectOld.bottom = rect.bottom;
|
||||
pWVT->sRectOld.left = rect.left;
|
||||
pWVT->sRectOld.top = rect.top;
|
||||
pWVT->sRectOld.right = rect.right;
|
||||
pWVT->sRectOld.bottom = rect.bottom;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -1744,10 +1758,8 @@ static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wPara
|
||||
{
|
||||
pWVT->bMaximized = TRUE;
|
||||
|
||||
if ( pWVT->ResizeMode == HB_GTI_RESIZEMODE_FONT )
|
||||
{
|
||||
if( pWVT->ResizeMode == HB_GTI_RESIZEMODE_FONT )
|
||||
hb_gt_wvt_FitSize( pWVT );
|
||||
}
|
||||
else
|
||||
{
|
||||
hb_gt_wvt_FitRows( pWVT );
|
||||
@@ -1873,61 +1885,89 @@ static BOOL hb_gt_wvt_ValidWindowSize( HWND hWnd, int rows, int cols, HFONT hFon
|
||||
return ( width <= maxWidth ) && ( height <= maxHeight );
|
||||
}
|
||||
|
||||
static HWND hb_gt_wvt_CreateWindow( HINSTANCE hInstance, int iCmdShow )
|
||||
static HWND hb_gt_wvt_CreateWindow( PHB_GTWVT pWVT )
|
||||
{
|
||||
HWND hWnd;
|
||||
HWND hWnd, hWndParent;
|
||||
LPTSTR szAppName;
|
||||
|
||||
/* InitCommonControls(); */
|
||||
|
||||
szAppName = HB_TCHAR_CONVTO( hb_cmdargARGV()[ 0 ] );
|
||||
|
||||
hWnd = CreateWindow(
|
||||
s_szClassName, /* classname */
|
||||
szAppName, /* window name */
|
||||
WS_THICKFRAME|WS_OVERLAPPED|WS_CAPTION|
|
||||
WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, /* style */
|
||||
0, /* x */
|
||||
0, /* y */
|
||||
CW_USEDEFAULT, /* width */
|
||||
CW_USEDEFAULT, /* height */
|
||||
NULL, /* window parent */
|
||||
NULL, /* menu */
|
||||
hInstance, /* instance */
|
||||
NULL ); /* lpParam */
|
||||
hWndParent = NULL;
|
||||
if( pWVT->pPP->bConfigured )
|
||||
{
|
||||
PHB_GT pGTp = hb_gt_ItemBase( pWVT->pPP->pParentGT );
|
||||
if( pGTp )
|
||||
{
|
||||
PHB_GTWVT pWVTp = HB_GTWVT_GET( pGTp );
|
||||
hWndParent = pWVTp->hWnd;
|
||||
hb_gt_BaseFree( pGTp );
|
||||
|
||||
if( hWndParent )
|
||||
{
|
||||
RECT rc;
|
||||
POINT pt;
|
||||
|
||||
GetClientRect( hWndParent, &rc );
|
||||
if( pWVT->pPP->bRowCols )
|
||||
{
|
||||
pt.x = rc.left + ( pWVTp->PTEXTSIZE.x * pWVT->pPP->y );
|
||||
pt.y = rc.top + ( pWVTp->PTEXTSIZE.y * pWVT->pPP->x );
|
||||
|
||||
pWVT->ROWS = pWVT->pPP->width;
|
||||
pWVT->COLS = pWVT->pPP->height;
|
||||
}
|
||||
else
|
||||
{
|
||||
pt.x = rc.left + pWVT->pPP->x;
|
||||
pt.y = rc.top + pWVT->pPP->y;
|
||||
}
|
||||
|
||||
ClientToScreen( hWndParent, &pt );
|
||||
|
||||
pWVT->pPP->x = pt.x;
|
||||
pWVT->pPP->y = pt.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hWnd = CreateWindowEx(
|
||||
pWVT->pPP->exStyle, /* extended style */
|
||||
s_szClassName, /* classname */
|
||||
szAppName, /* window name */
|
||||
pWVT->pPP->style, /* style */
|
||||
pWVT->pPP->x, /* x */
|
||||
pWVT->pPP->y, /* y */
|
||||
pWVT->pPP->width, /* width */
|
||||
pWVT->pPP->height, /* height */
|
||||
hWndParent, /* window parent */
|
||||
NULL, /* menu */
|
||||
pWVT->hInstance, /* instance */
|
||||
NULL ); /* lpParam */
|
||||
|
||||
HB_TCHAR_FREE( szAppName );
|
||||
|
||||
if( hWnd )
|
||||
{
|
||||
/*
|
||||
* If you wish to show window the way you want, put somewhere in your application
|
||||
* ANNOUNCE HB_NOSTARTUPWINDOW
|
||||
* If so compiled, then you need to issue Wvt_ShowWindow( SW_RESTORE )
|
||||
* at the point you desire in your code.
|
||||
*/
|
||||
if( hb_dynsymFind( "HB_NOSTARTUPWINDOW" ) != NULL )
|
||||
{
|
||||
iCmdShow = SW_HIDE;
|
||||
}
|
||||
|
||||
ShowWindow( hWnd, iCmdShow );
|
||||
UpdateWindow( hWnd );
|
||||
}
|
||||
|
||||
return hWnd;
|
||||
}
|
||||
|
||||
static BOOL hb_gt_wvt_CreateConsoleWindow( PHB_GTWVT pWVT )
|
||||
{
|
||||
int iCmdShow;
|
||||
|
||||
if( !pWVT->hWnd )
|
||||
{
|
||||
pWVT->hWnd = hb_gt_wvt_CreateWindow( pWVT->hInstance, pWVT->iCmdShow );
|
||||
pWVT->hWnd = hb_gt_wvt_CreateWindow( pWVT );
|
||||
if( !pWVT->hWnd )
|
||||
hb_errInternal( 10001, "Failed to create WVT window", NULL, NULL );
|
||||
|
||||
hb_gt_wvt_InitWindow( pWVT, pWVT->ROWS, pWVT->COLS );
|
||||
|
||||
/* Set icon */
|
||||
if( pWVT->hIcon )
|
||||
{
|
||||
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_SMALL, ( LPARAM ) pWVT->hIcon ); /* Set Title Bar Icon */
|
||||
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_BIG , ( LPARAM ) pWVT->hIcon ); /* Set Task List Icon */
|
||||
}
|
||||
|
||||
/* Set default window title */
|
||||
{
|
||||
PHB_FNAME pFileName = hb_fsFNameSplit( hb_cmdargARGV()[ 0 ] );
|
||||
@@ -1946,6 +1986,34 @@ static BOOL hb_gt_wvt_CreateConsoleWindow( PHB_GTWVT pWVT )
|
||||
}
|
||||
}
|
||||
|
||||
/* Manage Windows Open Mode */
|
||||
{
|
||||
if( pWVT->pPP->bConfigured )
|
||||
{
|
||||
iCmdShow = pWVT->pPP->bVisible ? SW_SHOWNORMAL : SW_HIDE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* If you wish to show window the way you want, put somewhere in your application
|
||||
* ANNOUNCE HB_NOSTARTUPWINDOW
|
||||
* If so compiled, then you need to issue Wvt_ShowWindow( SW_RESTORE )
|
||||
* at the point you desire in your code.
|
||||
*/
|
||||
if( hb_dynsymFind( "HB_NOSTARTUPWINDOW" ) != NULL )
|
||||
{
|
||||
iCmdShow = SW_HIDE;
|
||||
}
|
||||
else
|
||||
{
|
||||
iCmdShow = SW_SHOWNORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
ShowWindow( pWVT->hWnd, iCmdShow );
|
||||
UpdateWindow( pWVT->hWnd );
|
||||
}
|
||||
|
||||
/* Initialize GUI base */
|
||||
{
|
||||
pWVT->hdc = GetDC( pWVT->hWnd );
|
||||
@@ -2012,7 +2080,6 @@ static void hb_gt_wvt_Exit( PHB_GT pGT )
|
||||
}
|
||||
hb_gt_wvt_Free( pWVT );
|
||||
}
|
||||
//HB_GTSUPER_EXIT( pGT );
|
||||
}
|
||||
|
||||
/* ********************************************************************** */
|
||||
@@ -2253,7 +2320,6 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
hb_gt_wvt_ResetWindowSize( pWVT );
|
||||
hb_gt_wvt_UpdateCaret( pWVT );
|
||||
HB_GTSELF_REFRESH( pGT );
|
||||
}
|
||||
DeleteObject( hFont );
|
||||
@@ -2453,49 +2519,72 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
|
||||
case HB_GTI_ICONFILE:
|
||||
{
|
||||
HICON hIcon = 0;
|
||||
if( ( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) && pWVT->hWnd )
|
||||
if( ( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) )
|
||||
{
|
||||
LPTSTR lpImage = HB_TCHAR_CONVTO( hb_itemGetCPtr( pInfo->pNewVal ) );
|
||||
hIcon = ( HICON ) LoadImage( ( HINSTANCE ) NULL, lpImage,
|
||||
IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
|
||||
HICON hIconToFree = ( pWVT->hIcon && pWVT->bIconToFree ) ? pWVT->hIcon : NULL;
|
||||
LPTSTR lpImage;
|
||||
|
||||
lpImage = HB_TCHAR_CONVTO( hb_itemGetCPtr( pInfo->pNewVal ) );
|
||||
pWVT->bIconToFree = TRUE;
|
||||
pWVT->hIcon = ( HICON ) LoadImage( ( HINSTANCE ) NULL, lpImage,
|
||||
IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
|
||||
HB_TCHAR_FREE( lpImage );
|
||||
if( hIcon )
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
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 */
|
||||
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_SMALL, ( LPARAM ) pWVT->hIcon ); /* Set Title Bar Icon */
|
||||
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_BIG , ( LPARAM ) pWVT->hIcon ); /* Set Task List Icon */
|
||||
}
|
||||
|
||||
if( hIconToFree )
|
||||
DestroyIcon( hIconToFree );
|
||||
}
|
||||
pInfo->pResult = hb_itemPutNInt( pInfo->pResult, ( HB_PTRDIFF ) hIcon );
|
||||
pInfo->pResult = hb_itemPutNInt( pInfo->pResult, ( HB_PTRDIFF ) pWVT->hIcon );
|
||||
break;
|
||||
}
|
||||
|
||||
case HB_GTI_ICONRES:
|
||||
{
|
||||
HICON hIcon = 0;
|
||||
if( pWVT->hWnd )
|
||||
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
|
||||
{
|
||||
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
|
||||
HICON hIconToFree = ( pWVT->hIcon && pWVT->bIconToFree ) ? pWVT->hIcon : NULL;
|
||||
LPTSTR lpIcon;
|
||||
|
||||
lpIcon = HB_TCHAR_CONVTO( hb_itemGetCPtr( pInfo->pNewVal ) );
|
||||
pWVT->bIconToFree = FALSE;
|
||||
pWVT->hIcon = LoadIcon( pWVT->hInstance, lpIcon );
|
||||
HB_TCHAR_FREE( lpIcon );
|
||||
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
LPTSTR lpIcon = HB_TCHAR_CONVTO( hb_itemGetCPtr( pInfo->pNewVal ) );
|
||||
hIcon = LoadIcon( pWVT->hInstance, lpIcon );
|
||||
HB_TCHAR_FREE( lpIcon );
|
||||
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_SMALL, ( LPARAM ) pWVT->hIcon ); /* Set Title Bar Icon */
|
||||
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_BIG , ( LPARAM ) pWVT->hIcon ); /* Set Task List Icon */
|
||||
}
|
||||
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 );
|
||||
|
||||
if( hIconToFree )
|
||||
DestroyIcon( hIconToFree );
|
||||
}
|
||||
else if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC )
|
||||
{
|
||||
HICON hIconToFree = ( pWVT->hIcon && pWVT->bIconToFree ) ? pWVT->hIcon : NULL;
|
||||
|
||||
pWVT->bIconToFree = FALSE;
|
||||
pWVT->hIcon = LoadIcon( pWVT->hInstance,
|
||||
MAKEINTRESOURCE( ( HB_LONG )
|
||||
hb_itemGetNInt( pInfo->pNewVal ) ) );
|
||||
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_SMALL, ( LPARAM ) pWVT->hIcon ); /* Set Title Bar Icon */
|
||||
SendNotifyMessage( pWVT->hWnd, WM_SETICON, ICON_BIG , ( LPARAM ) pWVT->hIcon ); /* Set Task List Icon */
|
||||
}
|
||||
|
||||
if( hIconToFree )
|
||||
DestroyIcon( hIconToFree );
|
||||
}
|
||||
pInfo->pResult = hb_itemPutNInt( pInfo->pResult, ( HB_PTRDIFF ) pWVT->hIcon );
|
||||
break;
|
||||
}
|
||||
|
||||
case HB_GTI_VIEWMAXWIDTH:
|
||||
pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->COLS );
|
||||
break;
|
||||
@@ -2566,7 +2655,6 @@ 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 )
|
||||
@@ -2592,9 +2680,8 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
#else
|
||||
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 );
|
||||
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DEFERERASE );
|
||||
ShowWindow( pWVT->hWnd, SW_HIDE );
|
||||
ShowWindow( pWVT->hWnd, SW_NORMAL );
|
||||
}
|
||||
@@ -2687,7 +2774,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
pWVT->COLORS[ iIndex - 1 ] = hb_itemGetNL( pInfo->pNewVal2 );
|
||||
|
||||
if( pWVT->hWnd )
|
||||
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
|
||||
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2710,7 +2797,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
pWVT->COLORS[ i ] = hb_arrayGetNL( pInfo->pNewVal, i + 1 );
|
||||
|
||||
if( pWVT->hWnd )
|
||||
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
|
||||
HB_GTSELF_EXPOSEAREA( pWVT->pGT, 0, 0, pWVT->ROWS, pWVT->COLS );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2733,12 +2820,15 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
RECT rect = { 0,0,0,0 };
|
||||
GetWindowRect( pWVT->hWnd, &rect );
|
||||
|
||||
x = hb_itemGetNI( pInfo->pNewVal );
|
||||
y = hb_itemGetNI( pInfo->pNewVal2 );
|
||||
if ( iType == HB_GTI_SETPOS_ROWCOL )
|
||||
if( iType == HB_GTI_SETPOS_ROWCOL )
|
||||
{
|
||||
y *= pWVT->PTEXTSIZE.x;
|
||||
x *= pWVT->PTEXTSIZE.y;
|
||||
y = hb_itemGetNI( pInfo->pNewVal ) * pWVT->PTEXTSIZE.y;
|
||||
x = hb_itemGetNI( pInfo->pNewVal2 ) * pWVT->PTEXTSIZE.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = hb_itemGetNI( pInfo->pNewVal );
|
||||
y = hb_itemGetNI( pInfo->pNewVal2 );
|
||||
}
|
||||
hb_retl( SetWindowPos( pWVT->hWnd, NULL,
|
||||
x,
|
||||
@@ -2755,7 +2845,8 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
switch( iMessage )
|
||||
{
|
||||
case HB_GTS_WINDOWHANDLE:
|
||||
pInfo->pResult = hb_itemPutNInt( pInfo->pResult, ( HB_PTRDIFF ) pWVT->hWnd );
|
||||
if( pWVT->hWnd )
|
||||
pInfo->pResult = hb_itemPutNInt( pInfo->pResult, ( HB_PTRDIFF ) pWVT->hWnd );
|
||||
break;
|
||||
|
||||
case HB_GTS_CENTERWINDOW:
|
||||
@@ -2766,13 +2857,15 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
pWVT->CentreWindow = hb_arrayGetL( pInfo->pNewVal2, 1 );
|
||||
if( hb_arrayGetL( pInfo->pNewVal2, 2 ) )
|
||||
{
|
||||
hb_gt_wvt_ResetWindowSize( pWVT );
|
||||
if( pWVT->hWnd )
|
||||
hb_gt_wvt_ResetWindowSize( pWVT );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HB_GTS_PROCESSMESSAGES:
|
||||
hb_gt_wvt_ProcessMessages( pWVT );
|
||||
if( pWVT->hWnd )
|
||||
hb_gt_wvt_ProcessMessages( pWVT );
|
||||
break;
|
||||
|
||||
case HB_GTS_KEYBOARD:
|
||||
@@ -2781,7 +2874,8 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
break;
|
||||
|
||||
case HB_GTS_RESETWINDOW:
|
||||
hb_gt_wvt_ResetWindowSize( pWVT );
|
||||
if( pWVT->hWnd )
|
||||
hb_gt_wvt_ResetWindowSize( pWVT );
|
||||
break;
|
||||
|
||||
case HB_GTS_SETTIMER:
|
||||
@@ -2790,13 +2884,16 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
break;
|
||||
|
||||
case HB_GTS_KILLTIMER:
|
||||
if( hb_itemType( pInfo->pNewVal2 ) & HB_IT_NUMERIC )
|
||||
KillTimer( pWVT->hWnd, hb_itemGetNI( pInfo->pNewVal2 ) );
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
if( hb_itemType( pInfo->pNewVal2 ) & HB_IT_NUMERIC )
|
||||
KillTimer( pWVT->hWnd, hb_itemGetNI( pInfo->pNewVal2 ) );
|
||||
}
|
||||
break;
|
||||
|
||||
case HB_GTS_SETPOSITION:
|
||||
{
|
||||
if( hb_itemType( pInfo->pNewVal2 ) & HB_IT_ARRAY )
|
||||
if( pWVT->hWnd && ( hb_itemType( pInfo->pNewVal2 ) & HB_IT_ARRAY ) )
|
||||
{
|
||||
RECT rect = { 0,0,0,0 };
|
||||
GetWindowRect( pWVT->hWnd, &rect );
|
||||
@@ -2810,17 +2907,21 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
break;
|
||||
}
|
||||
case HB_GTS_SHOWWINDOW:
|
||||
if( hb_itemType( pInfo->pNewVal2 ) & HB_IT_NUMERIC )
|
||||
ShowWindow( pWVT->hWnd, hb_itemGetNI( pInfo->pNewVal2 ) );
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
if( hb_itemType( pInfo->pNewVal2 ) & HB_IT_NUMERIC )
|
||||
ShowWindow( pWVT->hWnd, hb_itemGetNI( pInfo->pNewVal2 ) );
|
||||
}
|
||||
break;
|
||||
|
||||
case HB_GTS_UPDATEWINDOW:
|
||||
UpdateWindow( pWVT->hWnd );
|
||||
if( pWVT->hWnd )
|
||||
UpdateWindow( pWVT->hWnd );
|
||||
break;
|
||||
|
||||
case HB_GTS_SYSTRAYICON:
|
||||
{
|
||||
if( hb_itemType( pInfo->pNewVal2 ) & HB_IT_ARRAY )
|
||||
if( pWVT->hWnd && ( hb_itemType( pInfo->pNewVal2 ) & HB_IT_ARRAY ) )
|
||||
{
|
||||
int mode = hb_arrayGetNI( pInfo->pNewVal2, 1 );
|
||||
int iIconType = hb_arrayGetNI( pInfo->pNewVal2, 2 );
|
||||
@@ -2849,7 +2950,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
tnid.cbSize = sizeof( NOTIFYICONDATA ) ;
|
||||
tnid.hWnd = pWVT->hWnd;
|
||||
tnid.uID = HB_ID_NOTIFYICON;
|
||||
tnid.uFlags = NIF_MESSAGE + NIF_ICON + NIF_TIP;
|
||||
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
|
||||
tnid.uCallbackMessage = HB_MSG_NOTIFYICON;
|
||||
tnid.hIcon = hIcon ;
|
||||
|
||||
@@ -2867,90 +2968,176 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
|
||||
case HB_GTS_WNDSTATE:
|
||||
{
|
||||
int iSpec = hb_itemGetNI( pInfo->pNewVal2 );
|
||||
|
||||
switch( iSpec )
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
case WNDS_SETONTOP:
|
||||
int iSpec = hb_itemGetNI( pInfo->pNewVal2 );
|
||||
|
||||
switch( iSpec )
|
||||
{
|
||||
RECT rect = { 0,0,0,0 };
|
||||
GetWindowRect( pWVT->hWnd, &rect );
|
||||
hb_retl( SetWindowPos( pWVT->hWnd, HWND_TOPMOST,
|
||||
rect.left,
|
||||
rect.top,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE + SWP_NOMOVE + SWP_NOACTIVATE ) );
|
||||
break;
|
||||
case HB_GTS_WS_SETONTOP:
|
||||
{
|
||||
RECT rect = { 0,0,0,0 };
|
||||
GetWindowRect( pWVT->hWnd, &rect );
|
||||
hb_retl( SetWindowPos( pWVT->hWnd, HWND_TOPMOST,
|
||||
rect.left,
|
||||
rect.top,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE + SWP_NOMOVE + SWP_NOACTIVATE ) );
|
||||
break;
|
||||
}
|
||||
case HB_GTS_WS_SETASNORMAL:
|
||||
{
|
||||
RECT rect = { 0,0,0,0 };
|
||||
GetWindowRect( pWVT->hWnd, &rect );
|
||||
hb_retl( SetWindowPos( pWVT->hWnd, HWND_NOTOPMOST,
|
||||
rect.left,
|
||||
rect.top,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE + SWP_NOMOVE + SWP_NOACTIVATE ) );
|
||||
break;
|
||||
}
|
||||
|
||||
case HB_GTS_WS_MINIMIZED:
|
||||
ShowWindow( pWVT->hWnd, SW_MINIMIZE );
|
||||
break;
|
||||
|
||||
case HB_GTS_WS_MAXIMIZED:
|
||||
if( pWVT->bResizable )
|
||||
ShowWindow( pWVT->hWnd, SW_MAXIMIZE );
|
||||
else
|
||||
ShowWindow( pWVT->hWnd, SW_RESTORE );
|
||||
break;
|
||||
|
||||
case HB_GTS_WS_HIDDEN:
|
||||
ShowWindow( pWVT->hWnd, SW_HIDE );
|
||||
break;
|
||||
|
||||
case HB_GTS_WS_NORMAL:
|
||||
ShowWindow( pWVT->hWnd, SW_SHOWNORMAL );
|
||||
break;
|
||||
}
|
||||
case WNDS_SETASNORMAL:
|
||||
{
|
||||
RECT rect = { 0,0,0,0 };
|
||||
GetWindowRect( pWVT->hWnd, &rect );
|
||||
hb_retl( SetWindowPos( pWVT->hWnd, HWND_NOTOPMOST,
|
||||
rect.left,
|
||||
rect.top,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE + SWP_NOMOVE + SWP_NOACTIVATE ) );
|
||||
break;
|
||||
}
|
||||
|
||||
case WNDS_MINIMIZED:
|
||||
ShowWindow( pWVT->hWnd, SW_MINIMIZE );
|
||||
break;
|
||||
|
||||
case WNDS_MAXIMIZED:
|
||||
if( pWVT->bResizable )
|
||||
ShowWindow( pWVT->hWnd, SW_MAXIMIZE );
|
||||
else
|
||||
ShowWindow( pWVT->hWnd, SW_RESTORE );
|
||||
break;
|
||||
|
||||
case WNDS_HIDDEN:
|
||||
ShowWindow( pWVT->hWnd, SW_HIDE );
|
||||
break;
|
||||
|
||||
case WNDS_NORMAL:
|
||||
ShowWindow( pWVT->hWnd, SW_SHOWNORMAL );
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case HB_GTS_FACTOR:
|
||||
{
|
||||
if ( pWVT->pfnLayered )
|
||||
if( pWVT->hWnd )
|
||||
{
|
||||
SetWindowLong( pWVT->hWnd,
|
||||
GWL_EXSTYLE,
|
||||
GetWindowLong( pWVT->hWnd, GWL_EXSTYLE ) | WS_EX_LAYERED );
|
||||
if ( pWVT->pfnLayered )
|
||||
{
|
||||
SetWindowLong( pWVT->hWnd,
|
||||
GWL_EXSTYLE,
|
||||
GetWindowLong( pWVT->hWnd, GWL_EXSTYLE ) | WS_EX_LAYERED );
|
||||
|
||||
pWVT->pfnLayered( pWVT->hWnd,
|
||||
RGB( 255,255,255 ),
|
||||
hb_itemGetNI( pInfo->pNewVal2 ),
|
||||
/*LWA_COLORKEY|*/ LWA_ALPHA );
|
||||
pWVT->pfnLayered( pWVT->hWnd,
|
||||
RGB( 255,255,255 ),
|
||||
hb_itemGetNI( pInfo->pNewVal2 ),
|
||||
/*LWA_COLORKEY|*/ LWA_ALPHA );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HB_GTI_PRESPARAM:
|
||||
{
|
||||
case HB_GTI_PRESPARAMS:
|
||||
if ( ! pWVT->hWnd )
|
||||
{
|
||||
if( hb_itemType( pInfo->pNewVal ) & HB_IT_ARRAY )
|
||||
{
|
||||
int iParam = hb_arrayLength( pInfo->nNewVal );
|
||||
int iParam = hb_arrayLen( pInfo->pNewVal );
|
||||
if( iParam == HB_GTI_PP_SIZE )
|
||||
{
|
||||
int mode = hb_arrayGetNI( pInfo->pNewVal, 1 );
|
||||
PHB_ITEM pSome;
|
||||
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_EXSTYLE );
|
||||
if( hb_itemType( pSome ) & HB_IT_NUMERIC )
|
||||
{
|
||||
pWVT->pPP->exStyle = hb_itemGetNInt( pSome );
|
||||
}
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_STYLE );
|
||||
if( hb_itemType( pSome ) & HB_IT_NUMERIC )
|
||||
{
|
||||
pWVT->pPP->style = hb_itemGetNInt( pSome );
|
||||
}
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_X );
|
||||
if( hb_itemType( pSome ) & HB_IT_NUMERIC )
|
||||
{
|
||||
pWVT->pPP->x = hb_itemGetNInt( pSome );
|
||||
}
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_Y );
|
||||
if( hb_itemType( pSome ) & HB_IT_NUMERIC )
|
||||
{
|
||||
pWVT->pPP->y = hb_itemGetNInt( pSome );
|
||||
}
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_WIDTH );
|
||||
if( hb_itemType( pSome ) & HB_IT_NUMERIC )
|
||||
{
|
||||
pWVT->pPP->width = hb_itemGetNInt( pSome );
|
||||
}
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_HEIGHT );
|
||||
if( hb_itemType( pSome ) & HB_IT_NUMERIC )
|
||||
{
|
||||
pWVT->pPP->height = hb_itemGetNInt( pSome );
|
||||
}
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_PARENT );
|
||||
if( hb_itemType( pSome ) & HB_IT_POINTER )
|
||||
{
|
||||
pWVT->pPP->pParentGT = hb_itemNew( hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_PARENT ) );
|
||||
}
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_VISIBLE );
|
||||
if( hb_itemType( pSome ) & HB_IT_LOGICAL )
|
||||
{
|
||||
pWVT->pPP->bVisible = hb_itemGetL( pSome );
|
||||
}
|
||||
pSome = hb_arrayGetItemPtr( pInfo->pNewVal, HB_GTI_PP_ROWCOLS );
|
||||
if( hb_itemType( pSome ) & HB_IT_LOGICAL )
|
||||
{
|
||||
pWVT->pPP->bRowCols = hb_itemGetL( pSome );
|
||||
}
|
||||
|
||||
/* Flag that caller configured itself */
|
||||
pWVT->pPP->bConfigured = TRUE;
|
||||
pWVT->CentreWindow = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case HB_GTI_ENABLE:
|
||||
{
|
||||
PHB_GT pGTp = hb_gt_ItemBase( pInfo->pNewVal );
|
||||
if( pGTp )
|
||||
{
|
||||
PHB_GTWVT pWVTp = HB_GTWVT_GET( pGTp );
|
||||
EnableWindow( pWVTp->hWnd, TRUE );
|
||||
hb_gt_BaseFree( pGTp );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HB_GTI_DISABLE:
|
||||
{
|
||||
PHB_GT pGTp = hb_gt_ItemBase( pInfo->pNewVal );
|
||||
if( pGTp )
|
||||
{
|
||||
PHB_GTWVT pWVTp = HB_GTWVT_GET( pGTp );
|
||||
EnableWindow( pWVTp->hWnd, FALSE );
|
||||
hb_gt_BaseFree( pGTp );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HB_GTI_SETFOCUS:
|
||||
{
|
||||
PHB_GT pGTp = hb_gt_ItemBase( pInfo->pNewVal );
|
||||
if( pGTp )
|
||||
{
|
||||
PHB_GTWVT pWVTp = HB_GTWVT_GET( pGTp );
|
||||
SetFocus( pWVTp->hWnd );
|
||||
hb_gt_BaseFree( pGTp );
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return HB_GTSUPER_INFO( pGT, iType, pInfo );
|
||||
|
||||
@@ -247,11 +247,12 @@ typedef struct
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
HWND hWndParent;
|
||||
PHB_ITEM pParentGT;
|
||||
BOOL bVisible;
|
||||
BOOL byPixel;
|
||||
BOOL bRowCols;
|
||||
BOOL bConfigured;
|
||||
|
||||
} HB_GT_PARAM, * PHB_GT_PARAM;
|
||||
} HB_GT_PARAMS, * PHB_GT_PARAMS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -290,7 +291,8 @@ typedef struct
|
||||
|
||||
BOOL CaretExist; /* TRUE if a caret has been created */
|
||||
BOOL CaretHidden; /* TRUE if a caret has been hiden */
|
||||
int CaretSize; /* Size of solid caret */
|
||||
int CaretSize; /* Height of solid caret */
|
||||
int CaretWidth; /* Width of solid caret */
|
||||
|
||||
POINT MousePos; /* the last mouse position */
|
||||
BOOL MouseMove; /* Flag to say whether to return mouse movement events */
|
||||
@@ -320,6 +322,9 @@ typedef struct
|
||||
BYTE chrTransTbl[ 256 ];
|
||||
#endif
|
||||
|
||||
HICON hIcon; /* Title Bar and Task List icon. Can be NULL. */
|
||||
BOOL bIconToFree; /* Do we need to free this icon when it's not NULL? */
|
||||
|
||||
int CodePage; /* Code page to use for display characters */
|
||||
BOOL Win9X; /* Flag to say if running on Win9X not NT/2000/XP */
|
||||
BOOL AltF4Close; /* Can use Alt+F4 to close application */
|
||||
@@ -337,6 +342,8 @@ typedef struct
|
||||
BOOL bClosable;
|
||||
|
||||
int ResizeMode; /* Sets the resizing mode either to FONT or ROWS */
|
||||
RECT sRectNew;
|
||||
RECT sRectOld;
|
||||
|
||||
// To Be Split in 2 Structures <1 GUI dynamic> <2 GUI fixed> //
|
||||
|
||||
@@ -408,9 +415,9 @@ typedef struct
|
||||
PHB_ITEM pcbFuncModal[ WVT_DLGMD_MAX ]; // codeblock for WndProc
|
||||
int iTypeModal[ WVT_DLGMD_MAX ]; // Type of Function Pointers - Function 1, Block 2, Method 3
|
||||
|
||||
PHB_GUIDATA * pGUI; // GUI Data Structure
|
||||
PHB_GUIDATA pGUI; // GUI Data Structure
|
||||
|
||||
PHB_GT_PARAM * pPP; // Presentation Parameters
|
||||
PHB_GT_PARAMS pPP; // Presentation Parameters
|
||||
|
||||
} HB_GTWVT, * PHB_GTWVT;
|
||||
|
||||
@@ -519,6 +526,7 @@ void HB_EXPORT hb_wvt_wvtUtils( void );
|
||||
|
||||
PHB_GTWVT HB_EXPORT hb_wvt_gtGetWVT( void );
|
||||
|
||||
void HB_EXPORT hb_ToOutDebug( const char * sTraceMsg, ... );
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#endif /* HB_WVT_H_ */
|
||||
|
||||
@@ -58,10 +58,28 @@
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#define HB_GTI_SETFONT 71
|
||||
#define HB_GTI_PRESPARAMS 72
|
||||
#define HB_GTI_ENABLE 73
|
||||
#define HB_GTI_DISABLE 74
|
||||
#define HB_GTI_SETFOCUS 75
|
||||
|
||||
/* Presentation Parameters | HB_GTI_PRESPARAMS */
|
||||
#define HB_GTI_PP_EXSTYLE 1
|
||||
#define HB_GTI_PP_STYLE 2
|
||||
#define HB_GTI_PP_X 3
|
||||
#define HB_GTI_PP_Y 4
|
||||
#define HB_GTI_PP_WIDTH 5
|
||||
#define HB_GTI_PP_HEIGHT 6
|
||||
#define HB_GTI_PP_PARENT 7
|
||||
#define HB_GTI_PP_VISIBLE 8
|
||||
#define HB_GTI_PP_ROWCOLS 9
|
||||
|
||||
#define HB_GTI_PP_SIZE 9
|
||||
|
||||
|
||||
#define HB_GTI_SPEC 1000
|
||||
|
||||
/* Window Specifications */
|
||||
/* Window Specifications | HB_GTI_SPEC */
|
||||
#define HB_GTS_WINDOWHANDLE 1
|
||||
#define HB_GTS_CENTERWINDOW 2
|
||||
#define HB_GTS_PROCESSMESSAGES 3
|
||||
@@ -76,18 +94,28 @@
|
||||
#define HB_GTS_SYSTRAYICON 12
|
||||
#define HB_GTS_FACTOR 13
|
||||
|
||||
/* Window States */
|
||||
#define WNDS_SETONTOP 1
|
||||
#define WNDS_SETASNORMAL 2
|
||||
#define WNDS_MINIMIZED 3
|
||||
#define WNDS_MAXIMIZED 4
|
||||
#define WNDS_HIDDEN 5
|
||||
#define WNDS_NORMAL 6
|
||||
|
||||
/* SysTrayIcon Types */
|
||||
#define NIT_FILE 0
|
||||
#define NIT_RESOURCEBYNAME 1
|
||||
#define NIT_RESOURCEBYID 2
|
||||
/* Window States | HB_GTS_WNDSTATE */
|
||||
#define HB_GTS_WS_SETONTOP 1
|
||||
#define HB_GTS_WS_SETASNORMAL 2
|
||||
#define HB_GTS_WS_MINIMIZED 3
|
||||
#define HB_GTS_WS_MAXIMIZED 4
|
||||
#define HB_GTS_WS_HIDDEN 5
|
||||
#define HB_GTS_WS_NORMAL 6
|
||||
|
||||
/* SysTrayIcon Types | HB_GTS_SYSTRAYICON */
|
||||
#define HB_GTS_NIT_FILE 0
|
||||
#define HB_GTS_NIT_RESOURCEBYNAME 1
|
||||
#define HB_GTS_NIT_RESOURCEBYID 2
|
||||
|
||||
/* ShowWindow modes | HB_GTS_SHOWWINDOW */
|
||||
#define HB_GTS_SW_NORMAL 1
|
||||
#define HB_GTS_SW_RESTORE 2
|
||||
#define HB_GTS_SW_HIDE 3
|
||||
#define HB_GTS_SW_MINIMIZED 4
|
||||
#define HB_GTS_SW_MAXIMIZED 5
|
||||
|
||||
#define HB_GTI_GUI 1001
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
|
||||
@@ -636,9 +636,11 @@ FUNCTION WvtMyBrowse()
|
||||
Hb_ThreadStart( {|| Hb_gtReload( 'WVG' ), ;
|
||||
SetMode( 35,70 ), ;
|
||||
hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_ROWS ),;
|
||||
hb_clear(), ;
|
||||
hb_clear(), ;
|
||||
Wvt_SetGui( .t. ), ;
|
||||
Wvt_ShowWindow( SW_RESTORE ), ;
|
||||
WvtMyBrowse_X() } )
|
||||
WvtMyBrowse_X();
|
||||
} )
|
||||
#else
|
||||
WvtMyBrowse_X()
|
||||
#endif
|
||||
@@ -646,7 +648,7 @@ FUNCTION WvtMyBrowse()
|
||||
Return nil
|
||||
//----------------------------------------------------------------------//
|
||||
FUNCTION WvtMyBrowse_X()
|
||||
LOCAL nKey, bBlock, oBrowse , aLastPaint, i
|
||||
LOCAL nKey, bBlock, oBrowse , aLastPaint, i, aLastPaint1
|
||||
LOCAL lEnd := .f.
|
||||
LOCAL aBlocks := {}
|
||||
LOCAL info_ := {}
|
||||
@@ -657,11 +659,12 @@ FUNCTION WvtMyBrowse_X()
|
||||
LOCAL nCursor := setCursor( 0 )
|
||||
LOCAL nRow := row()
|
||||
LOCAL nCol := col()
|
||||
LOCAL cColor := SetColor( "N/BG,N/GR*,,,N/W*" )//SetColor( "N/W*,N/GR*,,,N/W*" )
|
||||
LOCAL cColor := SetColor( "N/W*,N/GR*,,,N/W*" )
|
||||
LOCAL cScr := SaveScreen( 0,0,maxrow(),maxcol() )
|
||||
LOCAL aObjects:= WvtSetObjects( {} )
|
||||
LOCAL hPopup := Wvt_SetPopupMenu()
|
||||
LOCAL stru_:={}, cDbfFile, cSqlFile, cFileIndex, cFileDbf, cRDD, nIndex
|
||||
Local pGT, pGT1, nStStyle, nExStyle
|
||||
|
||||
STATIC nStyle := 0
|
||||
THREAD STATIC nFactor := 200
|
||||
@@ -712,8 +715,9 @@ FUNCTION WvtMyBrowse_X()
|
||||
|
||||
nStyle++
|
||||
|
||||
aAdd( aBlocks, {|| Wvt_SetIcon( "dia_excl.ico" ) } )
|
||||
aAdd( aBlocks, {|| Wvt_SetTitle( "WVT Gui TBrowse()" ) } )
|
||||
hb_gtInfo( HB_GTI_ICONFILE, "dia_excl.ico" )
|
||||
hb_gtInfo( HB_GTI_WINTITLE, "WVT Gui TBrowse()" )
|
||||
|
||||
aAdd( aBlocks, {|| Wvt_DrawBoxRaised( oBrowse:nTop-3, oBrowse:nLeft-2, oBrowse:nBottom+1, oBrowse:nRight+2 ) } )
|
||||
aAdd( aBlocks, {|| Wvt_DrawBoxRecessed( oBrowse:nTop, oBrowse:nLeft, oBrowse:nBottom, oBrowse:nRight ) } )
|
||||
aAdd( aBlocks, {|| Wvt_DrawGridHorz( oBrowse:nTop+3, oBrowse:nLeft, oBrowse:nRight, oBrowse:nBottom - oBrowse:nTop - 2 ) } )
|
||||
@@ -723,6 +727,7 @@ FUNCTION WvtMyBrowse_X()
|
||||
|
||||
DispBox( 0, 0, maxrow(), maxcol(), " ", "N/W" )
|
||||
DispOutAt( oBrowse:nTop-2, oBrowse:nleft, padc( CurDrive()+":\"+CurDir()+"\"+"test.dbf", oBrowse:nRight-oBrowse:nLeft+1 ), "W+/W" )
|
||||
DispOutAt( maxrow(), 0, padc( '<F3 Modal Window> <F11 Transp++> <F12 Transp-->',maxcol()+1), 'B/W' )
|
||||
|
||||
While !lEnd
|
||||
oBrowse:ForceStable()
|
||||
@@ -731,11 +736,11 @@ FUNCTION WvtMyBrowse_X()
|
||||
|
||||
do case
|
||||
case nKey == K_F12
|
||||
nFactor -= 10
|
||||
nFactor--
|
||||
hb_gtInfo( HB_GTI_SPEC, HB_GTS_FACTOR, nFactor )
|
||||
|
||||
case nKey == K_F11
|
||||
nFactor += 10
|
||||
nFactor++
|
||||
hb_gtInfo( HB_GTI_SPEC, HB_GTS_FACTOR, nFactor )
|
||||
|
||||
case BrwHandleKey( oBrowse, nKey, @lEnd )
|
||||
@@ -746,7 +751,7 @@ FUNCTION WvtMyBrowse_X()
|
||||
|
||||
DispBox( 0, 0, maxrow(), maxcol(), " ", "N/W" )
|
||||
DispOutAt( oBrowse:nTop-2, oBrowse:nleft, padc( CurDrive()+":\"+CurDir()+"\"+"test.dbf", oBrowse:nRight - oBrowse:nLeft + 1 ), "W+/W" )
|
||||
|
||||
DispOutAt( maxrow(), 0, padc( '<F3 Modal Window> <F11 Transp++> <F12 Transp-->',maxcol()+1), 'B/W' )
|
||||
oBrowse:configure()
|
||||
|
||||
case nKey == K_F2
|
||||
@@ -758,6 +763,36 @@ FUNCTION WvtMyBrowse_X()
|
||||
Set Order To ( nIndex )
|
||||
oBrowse:RefreshAll()
|
||||
|
||||
case nKey == K_F3
|
||||
aLastPaint1 := WvtSetBlocks( {} )
|
||||
|
||||
pGT1 := hb_gtCreate( 'WVG' )
|
||||
pGT := hb_gtSelect( pGT1 )
|
||||
|
||||
/* If coordinates are in row/cols */
|
||||
/* Extended Style, Standard Style, Top, Left, Rows, Columns, ParentGT, Visible, RowCols */
|
||||
/* If coordinates are in pixels */
|
||||
/* Extended Style, Standard Style, x, y, width, height, ParentGT, Visible, RowCols */
|
||||
nExStyle := WS_EX_DLGMODALFRAME
|
||||
nStStyle := WS_POPUP + WS_CAPTION + WS_MINIMIZEBOX
|
||||
hb_gtInfo( HB_GTI_PRESPARAMS, { nExStyle, nStStyle, 4, 8, 13, 50, pGT, .F., .T. } )
|
||||
|
||||
SetColor( 'W+/W' )
|
||||
CLS
|
||||
hb_gtInfo( HB_GTI_RESIZABLE , .F. )
|
||||
Hb_GtInfo( HB_GTI_CLOSABLE , .F. )
|
||||
hb_gtInfo( HB_GTI_WINTITLE , 'Information! [R:4 C:8]' )
|
||||
hb_gtInfo( HB_GTI_DISABLE , pGT )
|
||||
|
||||
Hb_GtInfo( HB_GTI_SPEC , HB_GTS_SHOWWINDOW, SW_NORMAL )
|
||||
|
||||
alert( 'I am in modal window !' )
|
||||
|
||||
pGT1 := NIL
|
||||
hb_gtSelect( pGT )
|
||||
hb_gtInfo( HB_GTI_ENABLE, pGT )
|
||||
hb_gtInfo( HB_GTI_SETFOCUS, pGT )
|
||||
WvtSetBlocks( aLastPaint1 )
|
||||
endcase
|
||||
end
|
||||
|
||||
|
||||
@@ -739,37 +739,37 @@ FUNCTION Wvt_KillTimer( nTimerID )
|
||||
|
||||
FUNCTION Wvt_SetOnTop()
|
||||
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, WNDS_SETONTOP )
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_SETONTOP )
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
FUNCTION Wvt_SetAsNormal()
|
||||
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, WNDS_SETASNORMAL )
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_SETASNORMAL )
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
FUNCTION Wvt_Minimize()
|
||||
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, WNDS_MINIMIZED )
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MINIMIZED )
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
FUNCTION Wvt_Maximize()
|
||||
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, WNDS_MAXIMIZED )
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
FUNCTION Wvt_Hide()
|
||||
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, WNDS_HIDDEN )
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_HIDDEN )
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
FUNCTION Wvt_Show()
|
||||
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, WNDS_NORMAL )
|
||||
RETURN Hb_GtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_NORMAL )
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
|
||||
Reference in New Issue
Block a user