2009-02-19 12:42 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* harbour/contrib/gtwvg/wvgwin.c
+ More functions.
* harbour/contrib/gtwvg/wvgdatar.prg
* harbour/contrib/gtwvg/wvgscrlb.prg
* harbour/contrib/gtwvg/wvgwnd.prg
! WvgScrollBar() class now works in toto as per
Xbase++ documentation.
; TODO: Implementation of WvgScrollBar() in demowvg.prg.
This commit is contained in:
@@ -8,6 +8,18 @@
|
||||
2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2009-02-19 12:42 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* harbour/contrib/gtwvg/wvgwin.c
|
||||
+ More functions.
|
||||
|
||||
* harbour/contrib/gtwvg/wvgdatar.prg
|
||||
* harbour/contrib/gtwvg/wvgscrlb.prg
|
||||
* harbour/contrib/gtwvg/wvgwnd.prg
|
||||
! WvgScrollBar() class now works in toto as per
|
||||
Xbase++ documentation.
|
||||
|
||||
; TODO: Implementation of WvgScrollBar() in demowvg.prg.
|
||||
|
||||
2009-02-19 20:44 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
|
||||
* utils/Makefile
|
||||
! Fixed broken GNU Make after recent directory rename.
|
||||
|
||||
@@ -164,6 +164,9 @@ METHOD setData( xValue, mp2 ) CLASS DataRef
|
||||
ENDIF
|
||||
|
||||
CASE ::className == "SCROLLBAR"
|
||||
IF ::sl_editBuffer <> NIL
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, ::sl_editBuffer, .t. )
|
||||
ENDIF
|
||||
|
||||
ENDCASE
|
||||
|
||||
|
||||
@@ -73,14 +73,14 @@
|
||||
#include 'hbgtwvg.ch'
|
||||
#include 'wvtwin.ch'
|
||||
#include 'wvgparts.ch'
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
#if 0
|
||||
|
||||
#include 'xhb.ch'
|
||||
#include 'cstruct.ch'
|
||||
#include 'wintypes.ch'
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
#if 1
|
||||
|
||||
typedef struct tagPOINT {;
|
||||
LONG x;
|
||||
LONG y;
|
||||
@@ -103,7 +103,16 @@ typedef struct tagSCROLLBARINFO {;
|
||||
DWORD x; //rgstate[CCHILDREN_SCROLLBAR+1];
|
||||
} SCROLLBARINFO
|
||||
|
||||
#endif
|
||||
typedef struct tagSCROLLINFO {;
|
||||
UINT cbSize;
|
||||
UINT fMask;
|
||||
int nMin;
|
||||
int nMax;
|
||||
UINT nPage;
|
||||
int nPos;
|
||||
int nTrackPos;
|
||||
} SCROLLINFO
|
||||
|
||||
#endif
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -123,6 +132,8 @@ CLASS WvgScrollBar INHERIT WvgWindow, DataRef
|
||||
|
||||
DATA sl_xbeSB_Scroll
|
||||
|
||||
DATA lTracking INIT .f.
|
||||
|
||||
METHOD new()
|
||||
METHOD create()
|
||||
METHOD configure() VIRTUAL
|
||||
@@ -176,97 +187,168 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgSc
|
||||
::show()
|
||||
ENDIF
|
||||
|
||||
#if 0
|
||||
si IS SCROLLINFO
|
||||
si:cbSize := si:sizeof
|
||||
cSI := si:value
|
||||
IF WAPI_GetScrollInfo( ::hWnd, SB_CTL, @cSI )
|
||||
si:buffer( cSI )
|
||||
hb_ToOutDebug( "scrollinfo nMin=%i nMax=%i", si:nMin, si:nMax )
|
||||
ENDIF
|
||||
#endif
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD handleEvent( nMessage, aNM ) CLASS WvgScrollBar
|
||||
LOCAL nScrollMsg, nScrPos, nCommand
|
||||
LOCAL nScrMsg, nScrPos, nCommand
|
||||
|
||||
// hb_ToOutDebug( " %s:handleEvent( %i ) %i %i %i %i", __ObjGetClsName( self ), nMessage )
|
||||
hb_ToOutDebug( " %s:handleEvent( %i ) %i %i %i %i", __ObjGetClsName( self ), nMessage )
|
||||
|
||||
DO CASE
|
||||
|
||||
CASE nMessage == HB_GTE_HSCROLL
|
||||
IF !hb_isBlock( ::sl_xbeSB_Scroll )
|
||||
RETURN( EVENT_UNHANDELLED )
|
||||
ENDIF
|
||||
|
||||
nScrollMsg := aNM[ 1 ]
|
||||
nScrPos := aNM[ 2 ] // To be calculated
|
||||
|
||||
DO CASE
|
||||
|
||||
CASE nScrollMsg == SB_LEFT
|
||||
nCommand := WVGSB_PREVPOS
|
||||
CASE nScrollMsg == SB_RIGHT
|
||||
nCommand := WVGSB_NEXTPOS
|
||||
CASE nScrollMsg == SB_LINELEFT
|
||||
nCommand := WVGSB_PREVPAGE
|
||||
CASE nScrollMsg == SB_LINERIGHT
|
||||
nCommand := WVGSB_NEXTPAGE
|
||||
CASE nScrollMsg == SB_PAGELEFT
|
||||
nCommand := WVGSB_PREVPAGE
|
||||
CASE nScrollMsg == SB_PAGERIGHT
|
||||
nCommand := WVGSB_NEXTPAGE
|
||||
CASE nScrollMsg == SB_THUMBPOSITION
|
||||
nCommand := WVGSB_SLIDERTRACK
|
||||
CASE nScrollMsg == SB_THUMBTRACK
|
||||
nCommand := WVGSB_ENDTRACK
|
||||
CASE nScrollMsg == SB_ENDSCROLL
|
||||
nCommand := WVGSB_ENDSCROLL
|
||||
ENDCASE
|
||||
|
||||
eval( ::sl_xbeSB_Scroll, { nScrPos, nCommand }, NIL, self )
|
||||
RETURN( EVENT_HANDELLED )
|
||||
|
||||
CASE nMessage == HB_GTE_VSCROLL
|
||||
IF !hb_isBlock( ::sl_xbeSB_Scroll )
|
||||
RETURN( EVENT_UNHANDELLED )
|
||||
ENDIF
|
||||
|
||||
nScrollMsg := aNM[ 1 ]
|
||||
nScrPos := WAPI_GetScrollPos( ::hWnd, SB_CTL )
|
||||
|
||||
DO CASE
|
||||
CASE nScrollMsg == SB_LINEUP
|
||||
nCommand := WVGSB_PREVPOS
|
||||
CASE nScrollMsg == SB_LINEDOWN
|
||||
nCommand := WVGSB_NEXTPOS
|
||||
IF nScrPos < ::range[ 2 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, nScrPos+1, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrollMsg == SB_PAGEUP
|
||||
nCommand := WVGSB_PREVPAGE
|
||||
CASE nScrollMsg == SB_PAGEDOWN
|
||||
nCommand := WVGSB_NEXTPAGE
|
||||
CASE nScrollMsg == SB_TOP
|
||||
nCommand := WVGSB_TOP
|
||||
CASE nScrollMsg == SB_BOTTOM
|
||||
nCommand := WVGSB_BOTTOM
|
||||
CASE nScrollMsg == SB_THUMBPOSITION
|
||||
nCommand := WVGSB_SLIDERTRACK
|
||||
CASE nScrollMsg == SB_THUMBTRACK
|
||||
nCommand := WVGSB_ENDTRACK
|
||||
hb_ToOutDebug( "Parent %s", ::oParent:CLASSName )
|
||||
CASE nScrollMsg == SB_ENDSCROLL
|
||||
nCommand := WVGSB_ENDSCROLL
|
||||
hb_ToOutDebug( "Parent %s", ::oParent:CLASSName )
|
||||
OTHERWISE
|
||||
nCommand := -99
|
||||
ENDCASE
|
||||
|
||||
eval( ::sl_xbeSB_Scroll, { nScrPos, nCommand }, NIL, self )
|
||||
|
||||
RETURN( EVENT_HANDELLED )
|
||||
|
||||
CASE nMessage == HB_GTE_CTLCOLOR
|
||||
IF hb_isNumeric( ::hBrushBG )
|
||||
Win_SetBkMode( aNM[ 1 ], 1 )
|
||||
RETURN ( ::hBrushBG )
|
||||
ENDIF
|
||||
|
||||
CASE nMessage == HB_GTE_HSCROLL
|
||||
IF !hb_isBlock( ::sl_xbeSB_Scroll )
|
||||
RETURN( EVENT_UNHANDELLED )
|
||||
ENDIF
|
||||
|
||||
nScrMsg := aNM[ 1 ]
|
||||
IF nScrMsg == SB_THUMBPOSITION .or. nScrMsg == SB_THUMBTRACK
|
||||
nScrPos := aNM[ 2 ]
|
||||
ELSE
|
||||
nScrPos := WAPI_GetScrollPos( ::hWnd, SB_CTL )
|
||||
ENDIF
|
||||
|
||||
DO CASE
|
||||
CASE nScrMsg == SB_LEFT
|
||||
nCommand := WVGSB_PREVPOS
|
||||
IF nScrPos > ::range[ 1 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, --nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_RIGHT
|
||||
nCommand := WVGSB_NEXTPOS
|
||||
IF nScrPos < ::range[ 2 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, ++nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_LINELEFT
|
||||
nCommand := WVGSB_PREVPAGE
|
||||
IF nScrPos > ::range[ 1 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, --nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_LINERIGHT
|
||||
nCommand := WVGSB_NEXTPAGE
|
||||
IF nScrPos < ::range[ 2 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, ++nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_PAGELEFT
|
||||
nCommand := WVGSB_PREVPAGE
|
||||
IF nScrPos > ::range[ 1 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, --nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_PAGERIGHT
|
||||
nCommand := WVGSB_NEXTPAGE
|
||||
IF nScrPos < ::range[ 2 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, ++nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_THUMBPOSITION
|
||||
nCommand := WVGSB_SLIDERTRACK
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, nScrPos, .t. )
|
||||
|
||||
CASE nScrMsg == SB_THUMBTRACK
|
||||
nCommand := WVGSB_ENDTRACK
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, nScrPos, .t. )
|
||||
|
||||
CASE nScrMsg == SB_ENDSCROLL
|
||||
nCommand := WVGSB_ENDSCROLL
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, nScrPos, .t. )
|
||||
|
||||
ENDCASE
|
||||
|
||||
::sl_editBuffer := nScrPos
|
||||
eval( ::sl_xbeSB_Scroll, { nScrPos, nCommand }, NIL, self )
|
||||
RETURN( EVENT_HANDELLED )
|
||||
|
||||
|
||||
CASE nMessage == HB_GTE_VSCROLL
|
||||
|
||||
nScrMsg := aNM[ 1 ]
|
||||
IF nScrMsg == SB_THUMBPOSITION .or. nScrMsg == SB_THUMBTRACK
|
||||
nScrPos := aNM[ 2 ]
|
||||
ELSE
|
||||
nScrPos := WAPI_GetScrollPos( ::hWnd, SB_CTL )
|
||||
ENDIF
|
||||
|
||||
IF !hb_isBlock( ::sl_xbeSB_Scroll )
|
||||
RETURN( EVENT_UNHANDELLED )
|
||||
ENDIF
|
||||
|
||||
DO CASE
|
||||
CASE nScrMsg == SB_TOP
|
||||
nCommand := WVGSB_TOP
|
||||
IF nScrPos > ::range[ 1 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, --nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_BOTTOM
|
||||
nCommand := WVGSB_BOTTOM
|
||||
IF nScrPos < ::range[ 2 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, ++nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_LINEUP
|
||||
nCommand := WVGSB_PREVPOS
|
||||
IF nScrPos > ::range[ 1 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, --nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_LINEDOWN
|
||||
nCommand := WVGSB_NEXTPOS
|
||||
IF nScrPos < ::range[ 2 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, ++nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_PAGEUP
|
||||
nCommand := WVGSB_PREVPAGE
|
||||
IF nScrPos > ::range[ 1 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, --nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_PAGEDOWN
|
||||
nCommand := WVGSB_NEXTPAGE
|
||||
IF nScrPos < ::range[ 2 ]
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, ++nScrPos, .t. )
|
||||
ENDIF
|
||||
|
||||
CASE nScrMsg == SB_THUMBPOSITION
|
||||
nCommand := WVGSB_SLIDERTRACK
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, nScrPos, .t. )
|
||||
|
||||
CASE nScrMsg == SB_THUMBTRACK
|
||||
nCommand := WVGSB_ENDTRACK
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, nScrPos, .t. )
|
||||
|
||||
CASE nScrMsg == SB_ENDSCROLL
|
||||
nCommand := WVGSB_ENDSCROLL
|
||||
WAPI_SetScrollPos( ::hWnd, SB_CTL, nScrPos, .t. )
|
||||
|
||||
ENDCASE
|
||||
|
||||
::sl_editBuffer := nScrPos
|
||||
eval( ::sl_xbeSB_Scroll, { nScrPos, nCommand }, NIL, self )
|
||||
RETURN( EVENT_HANDELLED )
|
||||
|
||||
ENDCASE
|
||||
|
||||
RETURN EVENT_UNHANDELLED
|
||||
|
||||
@@ -2616,3 +2616,183 @@ HB_FUNC( WIN_FILLRECT )
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WVG_BEGINMOUSETRACKING )
|
||||
{
|
||||
TRACKMOUSEEVENT tmi;
|
||||
|
||||
tmi.cbSize = sizeof( TRACKMOUSEEVENT );
|
||||
tmi.dwFlags = TME_LEAVE | TME_HOVER ;
|
||||
tmi.hwndTrack = wapi_par_HWND( 1 );
|
||||
tmi.dwHoverTime = 1;
|
||||
wapi_ret_L( _TrackMouseEvent( &tmi ) );
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#include "hbapi.h"
|
||||
#include "hbapiitm.h"
|
||||
#include "hbapierr.h"
|
||||
#include "hbstack.h"
|
||||
|
||||
|
||||
#define HB_MEMSTRU_OSVERSIONINFO 1000001
|
||||
#define HB_MEMSTRU_LOGFONT 1000002
|
||||
|
||||
#define HB_ERR_MEMSTRU_NOT_MEM_BLOCK 4001
|
||||
#define HB_ERR_MEMSTRU_WRONG_MEMSTRU_BLOCK 4002
|
||||
#define HB_ERR_MEMSTRU_DESTROYED 4003
|
||||
|
||||
HB_EXTERN_BEGIN
|
||||
|
||||
extern PHB_ITEM hb_memstru_itemPut( PHB_ITEM pItem, void * pMemAddr, int iType );
|
||||
extern void * hb_memstru_itemGet( PHB_ITEM pItem, int iType, BOOL fError );
|
||||
extern void hb_memstru_ret( void * pMemAddr, int iType );
|
||||
extern void * hb_memstru_param( int iParam, int iType, BOOL fError );
|
||||
|
||||
HB_EXTERN_END
|
||||
|
||||
/* end of header file */
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int type;
|
||||
void * mem;
|
||||
}
|
||||
HB_MEMSTRU_HOLDER, * PHB_MEMSTRU_HOLDER;
|
||||
|
||||
static HB_GARBAGE_FUNC( hb_memstru_destructor )
|
||||
{
|
||||
PHB_MEMSTRU_HOLDER pStructHolder = ( PHB_MEMSTRU_HOLDER ) Cargo;
|
||||
|
||||
if( pStructHolder->mem )
|
||||
{
|
||||
hb_xfree( pStructHolder->mem );
|
||||
pStructHolder->mem = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
PHB_ITEM hb_memstru_itemPut( PHB_ITEM pItem, void * pMemAddr, int iType )
|
||||
{
|
||||
PHB_MEMSTRU_HOLDER pStructHolder;
|
||||
|
||||
if( pItem )
|
||||
{
|
||||
if( HB_IS_COMPLEX( pItem ) )
|
||||
hb_itemClear( pItem );
|
||||
}
|
||||
else
|
||||
pItem = hb_itemNew( pItem );
|
||||
|
||||
pStructHolder = ( PHB_MEMSTRU_HOLDER )
|
||||
hb_gcAlloc( sizeof( HB_MEMSTRU_HOLDER ), hb_memstru_destructor );
|
||||
pStructHolder->mem = pMemAddr;
|
||||
pStructHolder->type = iType;
|
||||
|
||||
return hb_itemPutPtrGC( pItem, pStructHolder );
|
||||
}
|
||||
|
||||
void * hb_memstru_itemGet( PHB_ITEM pItem, int iType, BOOL fError )
|
||||
{
|
||||
PHB_MEMSTRU_HOLDER pStructHolder = ( PHB_MEMSTRU_HOLDER )
|
||||
hb_itemGetPtrGC( pItem, hb_memstru_destructor );
|
||||
int iError;
|
||||
|
||||
if( !pStructHolder )
|
||||
iError = HB_ERR_MEMSTRU_NOT_MEM_BLOCK;
|
||||
else if( pStructHolder->type != iType )
|
||||
iError = HB_ERR_MEMSTRU_WRONG_MEMSTRU_BLOCK;
|
||||
else if( !pStructHolder->mem )
|
||||
iError = HB_ERR_MEMSTRU_DESTROYED;
|
||||
else
|
||||
return pStructHolder->mem;
|
||||
|
||||
if( fError )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, iError, NULL,
|
||||
HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void hb_memstru_ret( void * pMemAddr, int iType )
|
||||
{
|
||||
hb_memstru_itemPut( hb_stackReturnItem(), pMemAddr, iType );
|
||||
}
|
||||
|
||||
void * hb_memstru_param( int iParam, int iType, BOOL fError )
|
||||
{
|
||||
return hb_memstru_itemGet( hb_param( iParam, HB_IT_POINTER ), iType, fError );
|
||||
}
|
||||
|
||||
BOOL hb_memstru_store( void * pMemAddr, int iType, int iParam )
|
||||
{
|
||||
PHB_ITEM pItem = hb_param( iParam, HB_IT_BYREF );
|
||||
if( !pItem )
|
||||
return FALSE;
|
||||
|
||||
hb_memstru_itemPut( pItem, pMemAddr, iType );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
hb_memstru_*() functions can be used to pass structures between
|
||||
C and .prg code.
|
||||
*/
|
||||
|
||||
HB_FUNC( WAPI_STRUCT_OSVERSIONINFO )
|
||||
{
|
||||
OSVERSIONINFO * osvi;
|
||||
|
||||
osvi = ( OSVERSIONINFO * ) memset( hb_xgrab( sizeof( OSVERSIONINFO ) ),
|
||||
0, sizeof( OSVERSIONINFO ) );
|
||||
osvi->dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
|
||||
|
||||
hb_memstru_ret( osvi, HB_MEMSTRU_OSVERSIONINFO );
|
||||
}
|
||||
|
||||
HB_FUNC( WAPI_GETVERSIONEX )
|
||||
{
|
||||
OSVERSIONINFO * osvi;
|
||||
|
||||
osvi = ( OSVERSIONINFO * )
|
||||
hb_memstru_param( 1, HB_MEMSTRU_OSVERSIONINFO, TRUE );
|
||||
|
||||
if( osvi )
|
||||
hb_retl( GetVersionEx( osvi ) );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
You can also define some general functions to access given structure
|
||||
members if you will find it useful in some cases.
|
||||
*/
|
||||
HB_FUNC( WAPI_MEMBER_OSVERSIONINFO )
|
||||
{
|
||||
OSVERSIONINFO * osvi;
|
||||
const char * szMember;
|
||||
|
||||
osvi = ( OSVERSIONINFO * )
|
||||
hb_memstru_param( 1, HB_MEMSTRU_OSVERSIONINFO, TRUE );
|
||||
szMember = hb_parc( 2 );
|
||||
if( osvi && szMember )
|
||||
{
|
||||
if( !strcmp( szMember, "dwMajorVersion" ) )
|
||||
hb_retnint( osvi->dwMajorVersion );
|
||||
else if( !strcmp( szMember, "dwMinorVersion" ) )
|
||||
hb_retnint( osvi->dwMinorVersion );
|
||||
else if( !strcmp( szMember, "dwBuildNumber" ) )
|
||||
hb_retnint( osvi->dwBuildNumber );
|
||||
else if( !strcmp( szMember, "dwPlatformId" ) )
|
||||
hb_retnint( osvi->dwPlatformId );
|
||||
else if( !strcmp( szMember, "szCSDVersion" ) )
|
||||
;//wapi_rettstr( osvi->dwPlatformId );
|
||||
else
|
||||
{
|
||||
/* NIL for unknown members or RT error */
|
||||
}
|
||||
}
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
@@ -1238,7 +1238,7 @@ METHOD createControl() CLASS WvgWindow
|
||||
METHOD ControlWndProc( hWnd, nMessage, nwParam, nlParam ) CLASS WvgWindow
|
||||
LOCAL nCtrlID, nNotifctn, hWndCtrl, nObj, aMenuItem, oObj, nReturn
|
||||
|
||||
#if 1
|
||||
#if 0
|
||||
hb_ToOutDebug( "%s:wndProc( %i %i %i %i )", __ObjGetClsName( self ), hWnd, nMessage, nwParam, nlParam )
|
||||
#endif
|
||||
|
||||
@@ -1316,6 +1316,40 @@ METHOD ControlWndProc( hWnd, nMessage, nwParam, nlParam ) CLASS WvgWindow
|
||||
IF nReturn == EVENT_HANDELLED
|
||||
RETURN 0
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE WM_CAPTURECHANGED
|
||||
//hb_ToOutDebug( 'wm_CAPTURECHANGED' )
|
||||
EXIT
|
||||
|
||||
CASE WM_MOUSEMOVE
|
||||
IF ::objType == objTypeScrollBar
|
||||
IF !( ::lTracking )
|
||||
::lTracking := Wvg_BeginMouseTracking( ::hWnd )
|
||||
ENDIF
|
||||
//hb_ToOutDebug( 'wm_mouseMOVE' )
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE WM_MOUSEHOVER
|
||||
IF ::objType == objTypeScrollBar
|
||||
//hb_ToOutDebug( 'wm_mousehover' )
|
||||
IF ::oParent:objType == objTypeCrt
|
||||
WAPI_SetFocus( ::oParent:hWnd )
|
||||
ENDIF
|
||||
RETURN 0
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE WM_MOUSELEAVE
|
||||
IF ::objType == objTypeScrollBar
|
||||
::lTracking := .f.
|
||||
IF ::oParent:objType == objTypeCrt
|
||||
//hb_ToOutDebug( 'wm_mouseleave' )
|
||||
WAPI_SetFocus( ::oParent:hWnd )
|
||||
ENDIF
|
||||
ENDIF
|
||||
EXIT
|
||||
END
|
||||
|
||||
RETURN Win_CallWindowProc( ::nOldProc, hWnd, nMessage, nwParam, nlParam )
|
||||
|
||||
Reference in New Issue
Block a user