2008-12-06 19:08 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* harbour/contrib/gtwvg/makefile
* harbour/contrib/gtwvg/common.mak
+ wvgcheck.prg
+ wvgdatar.prg
+ wvgradio.prg
+ harbour/contrib/gtwvg/wvgcheck.prg
+ harbour/contrib/gtwvg/wvgdatar.prg
+ harbour/contrib/gtwvg/wvgradio.prg
+ Added WvgCheckBox(), WvgRadioButton(), DataRef() Xbase++ compatible classes.
* harbour/contrib/gtwvg/wvggui.c
* harbour/contrib/gtwvg/wvgwin.c
* harbour/contrib/gtwvg/wvgparts.ch
* harbour/contrib/gtwvg/wvglistb.prg
* harbour/contrib/gtwvg/wvgpushb.prg
* harbour/contrib/gtwvg/wvgstatb.prg
* harbour/contrib/gtwvg/wvgstatc.prg
* harbour/contrib/gtwvg/wvgtoolb.prg
* harbour/contrib/gtwvg/wvgtreev.prg
* harbour/contrib/gtwvg/wvghwnd.prg
; Heavy changes in class framework.
+ Many new winapi functions.
! Optimized use of hb_ACallBack().
- WinApi functions replaced by Harbour core functions.
* harbour/contrib/gtwvg/tests/demowvg.prg
+ Added functionality of WvgCheckBox() and WvgRadioButton() classes.
Now thses classes implement DataRef() class also. Work-in-progress.
;TODO : Few functions in wvgwin.c are not UNICODE compliant yet.
DONE All functions are now UNICODE compliant.
;Viktor, can you compile GTWVG on 64bits platform ?
;REQUEST : Can someone familiar with Xbase++ come forward to
write a small test program based on implemented classes.
Please exclude all that functionality which is not yet
implemented.
This commit is contained in:
@@ -8,6 +8,47 @@
|
||||
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2008-12-06 19:08 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* harbour/contrib/gtwvg/makefile
|
||||
* harbour/contrib/gtwvg/common.mak
|
||||
+ wvgcheck.prg
|
||||
+ wvgdatar.prg
|
||||
+ wvgradio.prg
|
||||
|
||||
+ harbour/contrib/gtwvg/wvgcheck.prg
|
||||
+ harbour/contrib/gtwvg/wvgdatar.prg
|
||||
+ harbour/contrib/gtwvg/wvgradio.prg
|
||||
+ Added WvgCheckBox(), WvgRadioButton(), DataRef() Xbase++ compatible classes.
|
||||
|
||||
* harbour/contrib/gtwvg/wvggui.c
|
||||
* harbour/contrib/gtwvg/wvgwin.c
|
||||
* harbour/contrib/gtwvg/wvgparts.ch
|
||||
* harbour/contrib/gtwvg/wvglistb.prg
|
||||
* harbour/contrib/gtwvg/wvgpushb.prg
|
||||
* harbour/contrib/gtwvg/wvgstatb.prg
|
||||
* harbour/contrib/gtwvg/wvgstatc.prg
|
||||
* harbour/contrib/gtwvg/wvgtoolb.prg
|
||||
* harbour/contrib/gtwvg/wvgtreev.prg
|
||||
* harbour/contrib/gtwvg/wvghwnd.prg
|
||||
; Heavy changes in class framework.
|
||||
+ Many new winapi functions.
|
||||
! Optimized use of hb_ACallBack().
|
||||
- WinApi functions replaced by Harbour core functions.
|
||||
|
||||
* harbour/contrib/gtwvg/tests/demowvg.prg
|
||||
+ Added functionality of WvgCheckBox() and WvgRadioButton() classes.
|
||||
Now thses classes implement DataRef() class also. Work-in-progress.
|
||||
|
||||
;TODO : Few functions in wvgwin.c are not UNICODE compliant yet.
|
||||
DONE All functions are now UNICODE compliant.
|
||||
|
||||
;Viktor, can you compile GTWVG on 64bits platform ?
|
||||
|
||||
;REQUEST : Can someone familiar with Xbase++ come forward to
|
||||
write a small test program based on implemented classes.
|
||||
Please exclude all that functionality which is not yet
|
||||
implemented.
|
||||
|
||||
2008-12-04 23:56 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* harbour/contrib/gtwvg/tests/hbmk_b32.bat
|
||||
+ xhb.lib - just to take use of hb_ToOutDebug(). While under heavy
|
||||
|
||||
@@ -34,6 +34,9 @@ PRG_SOURCES=\
|
||||
wvgstatc.prg \
|
||||
wvgtreev.prg \
|
||||
wincback.prg \
|
||||
wvgcheck.prg \
|
||||
wvgdatar.prg \
|
||||
wvgradio.prg \
|
||||
|
||||
|
||||
PRG_HEADERS=\
|
||||
|
||||
@@ -28,6 +28,9 @@ LIB_OBJS = \
|
||||
$(OBJ_DIR)wvgstatc$(OBJEXT) \
|
||||
$(OBJ_DIR)wvgtreev$(OBJEXT) \
|
||||
$(OBJ_DIR)wincback$(OBJEXT) \
|
||||
$(OBJ_DIR)wvgcheck$(OBJEXT) \
|
||||
$(OBJ_DIR)wvgdatar$(OBJEXT) \
|
||||
$(OBJ_DIR)wvgradio$(OBJEXT) \
|
||||
\
|
||||
$(OBJ_DIR)gtwvg$(OBJEXT) \
|
||||
$(OBJ_DIR)wvgcore$(OBJEXT) \
|
||||
|
||||
@@ -1377,9 +1377,9 @@ FUNCTION CreateMainMenu()
|
||||
oMenu:AddItem( "Dialog One . New Window . Threaded", {|| MyDialogOne( 1 ) } )
|
||||
oMenu:AddItem( "Dialog One . Main Window . Primary Thread", {|| MyDialogOne( 2 ) } )
|
||||
oMenu:AddItem( "-" )
|
||||
oMenu:AddItem( "Dialog Two", {|| MyDialogTwo() } )
|
||||
oMenu:AddItem( "Dialog Two" , {|| MyDialogTwo() } )
|
||||
oMenu:AddItem( "-" )
|
||||
oMenu:AddItem( "Exit" , {|| __keyboard( K_ESC ) } )
|
||||
oMenu:AddItem( "Exit" , {|| __keyboard( K_ESC ) } )
|
||||
g_oMenuBar:addItem( "",oMenu )
|
||||
|
||||
oMenu := wvtMenu():new():create()
|
||||
@@ -1399,39 +1399,39 @@ FUNCTION CreateMainMenu()
|
||||
|
||||
oMenu := wvtMenu():new():create()
|
||||
oMenu:Caption:= "Common Dialogs"
|
||||
oMenu:AddItem( "Fonts" ,{|| Wvt_ChooseFont() } )
|
||||
oMenu:AddItem( "Fonts" , {|| Wvt_ChooseFont() } )
|
||||
oMenu:AddItem( "-")
|
||||
oMenu:AddItem( "Colors",{|| Wvt_ChooseColor() } )
|
||||
oMenu:AddItem( "Colors" , {|| Wvt_ChooseColor() } )
|
||||
g_oMenuBar:addItem( "",oMenu)
|
||||
|
||||
oMenu := wvtMenu():new():create()
|
||||
oMenu:Caption:= "Functionality"
|
||||
oMenu:AddItem( "Expand" ,{|| WvtWindowExpand( 1 ) } )
|
||||
oMenu:AddItem( "Shrink" ,{|| WvtWindowExpand( -1 ) } )
|
||||
oMenu:AddItem( "Expand" , {|| WvtWindowExpand( 1 ) } )
|
||||
oMenu:AddItem( "Shrink" , {|| WvtWindowExpand( -1 ) } )
|
||||
oMenu:AddItem( "-")
|
||||
oMenu:AddItem( "Minimize",{|| Wvt_Minimize() } )
|
||||
oMenu:AddItem( "Maximize",{|| hb_gtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED ) } )
|
||||
oMenu:AddItem( "Minimize" , {|| Wvt_Minimize() } )
|
||||
oMenu:AddItem( "Maximize" , {|| hb_gtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED ) } )
|
||||
g_oMenuBar:addItem( "",oMenu)
|
||||
|
||||
oMenu := wvtMenu():new():create()
|
||||
oMenu:Caption:= "Modeless Dialogs"
|
||||
oMenu:AddItem( "Dynamic Dialog . Modeless" ,{|| DynDialog_2( 1 ) } )
|
||||
oMenu:AddItem( "Dynamic Dialog . Modal " ,{|| DynDialog_2( 2 ) } )
|
||||
oMenu:AddItem( "Dynamic Dialog . Modeless" , {|| DynDialog_2( 1 ) } )
|
||||
oMenu:AddItem( "Dynamic Dialog . Modal " , {|| DynDialog_2( 2 ) } )
|
||||
oMenu:AddItem( "-")
|
||||
oMenu:AddItem( "Slide Show . Modeless" ,{|| DlgSlideShow() } )
|
||||
oMenu:AddItem( "Slide Show . Modeless" , {|| DlgSlideShow() } )
|
||||
g_oMenuBar:addItem( "",oMenu)
|
||||
|
||||
oMenu := wvtMenu():new():create()
|
||||
oMenu:Caption:= "Active-X Controls"
|
||||
oMenu:AddItem( "ActiveX - Analog Clock" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 2 ) } ) } )
|
||||
oMenu:Caption:= "~XbpDialog()s"
|
||||
oMenu:AddItem( "ActiveX - Internet Explorer" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 1 ) } ) } )
|
||||
oMenu:AddItem( "-")
|
||||
oMenu:AddItem( "ActiveX - Internet Explorer", {|| Hb_ThreadStart( {|| ExecuteActiveX( 1 ) } ) } )
|
||||
oMenu:AddItem( "ActiveX - Visualize a PDF" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 3 ) } ) } )
|
||||
oMenu:AddItem( "-")
|
||||
oMenu:AddItem( "ActiveX - Visualize a PDF" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 3 ) } ) } )
|
||||
oMenu:AddItem( "ActiveX - Explorer . DHTML" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 11 ) } ) } )
|
||||
oMenu:AddItem( "-")
|
||||
oMenu:AddItem( "ActiveX - Explorer . DHTML" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 11 ) } ) } )
|
||||
oMenu:AddItem( "ActiveX - RMChart" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 4 ) } ) } )
|
||||
oMenu:AddItem( "-")
|
||||
oMenu:AddItem( "ActiveX - RMChart" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 4 ) } ) } )
|
||||
oMenu:AddItem( "ActiveX - Analog Clock" , {|| Hb_ThreadStart( {|| ExecuteActiveX( 2 ) } ) } )
|
||||
g_oMenuBar:addItem( "",oMenu)
|
||||
|
||||
RETURN g_oMenuBar
|
||||
@@ -2341,19 +2341,16 @@ FUNCTION GoogleMap()
|
||||
// The function has to be called via hb_threadStart( {|| ExecuteActiveX( nActiveX ) } )
|
||||
//
|
||||
Function ExecuteActiveX( nActiveX, xParam )
|
||||
Local oCrt, oTBar, oSBar, oPanel, oStatic, oCom, oXbp, oTree, oItem1, oItem2, oListBox
|
||||
LOCAL bComSize := {|m1,m2,o,w,x,y| m1 := m1, m2 := m2, o := o, ;
|
||||
w := oCrt:currentSize() ,;
|
||||
x := oTBar:currentSize() ,;
|
||||
y := oSBar:currentSize() ,;
|
||||
oCom:setPosAndSize( { 0, x[2] }, { w[1], w[2]-x[2]-y[2] }, .t. ), 1 }
|
||||
Local oCrt, oTBar, oSBar, oPanel, oStatic, oCom, oXbp, oTree, oItem1, oItem2
|
||||
LOCAL oListBox, oCheck, oRadio, oStatic2
|
||||
LOCAL aParts :={}
|
||||
|
||||
HB_SYMBOL_UNUSED( xParam )
|
||||
HB_SYMBOL_UNUSED( oCom )
|
||||
|
||||
//--------------------------- Dialog -------------------------------\\
|
||||
#if 1
|
||||
oCrt := WvgDialog():new( , , { 30,30 }, { 800,600 }, , .f. )
|
||||
//oCrt:resizable := .f.
|
||||
oCrt:closable := .t.
|
||||
oCrt:create()
|
||||
#else
|
||||
@@ -2364,13 +2361,13 @@ Function ExecuteActiveX( nActiveX, xParam )
|
||||
SetCursor( .f. )
|
||||
#endif
|
||||
|
||||
// Menu
|
||||
ActiveXBuildMenu( oCrt )
|
||||
//--------------------------- Menu --------------------------------\\
|
||||
ActiveXBuildMenu( oCrt, @oStatic, @oStatic2 )
|
||||
|
||||
// Toolbar
|
||||
oTBar := ActiveXBuildToolBar( oCrt, nActiveX )
|
||||
//--------------------------- ToolBar -----------------------------\\
|
||||
oTBar := ActiveXBuildToolBar( oCrt, nActiveX )
|
||||
|
||||
// Statusbar
|
||||
//--------------------------- StatusBar ---------------------------\\
|
||||
oSBar := WvgStatusBar():new( oCrt ):create( , , , , , .t. )
|
||||
oSBar:panelClick := {|oPanel| Win_MessageBox( , oPanel:caption ) }
|
||||
oPanel := oSBar:getItem( 1 )
|
||||
@@ -2380,45 +2377,67 @@ Function ExecuteActiveX( nActiveX, xParam )
|
||||
oPanel := oSBar:addItem()
|
||||
oPanel:caption := 'Click on any part!'
|
||||
|
||||
// Static text
|
||||
//--------------------------- Static ------------------------------\\
|
||||
oStatic := WvgStatic():new( oCrt )
|
||||
|
||||
oStatic:caption := chr(13)+'This is a Harbour dialog and is compatible with Xbase++ Parts. '+CRLF+;
|
||||
'XbpDialog() XbpMenuBar() XbpToolBar() XbpStatusBar() ' +;
|
||||
'XbpStatic() XbpTreeView() XbpActiveX() XbpListBox() '+CRLF+;
|
||||
'classes have been implemented'
|
||||
|
||||
oStatic:options := WVGSTATIC_TEXT_CENTER
|
||||
|
||||
oStatic:caption := chr(13)+'Implemented Xbase++ Parts'
|
||||
oStatic:create( , , { 0, oTBar:currentSize()[2]+3 }, { 120, oCrt:currentSize()[2]-;
|
||||
oTBar:currentSize()[2]-oSBar:currentSize()[2]-4 }, , .t. )
|
||||
|
||||
oStatic:resize := {|mp1,mp2,oSelf,w,x,y| mp1 := mp1, mp2 := mp2, oSelf := oSelf, ;
|
||||
w := oCrt:currentSize() ,;
|
||||
x := oTBar:currentSize() ,;
|
||||
y := oSBar:currentSize() ,;
|
||||
oStatic:setPosAndSize( { 0, x[2]+3 }, { 120, w[2]-x[2]-y[2]-4 }, .t. ) }
|
||||
//--------------------------- Static + Radio----------------------\\
|
||||
oStatic2 := WvgStatic():New( oCrt, , { 200,200 }, { 300, 200 }, , .f. )
|
||||
oStatic2:options := WVGSTATIC_FRAMETHICK
|
||||
oStatic2:create()
|
||||
oStatic2:setColorBG( RGB( 198,198,198 ) )
|
||||
oXbp := WvgPushButton():new( oStatic2 )
|
||||
oXbp:caption := "Hide"
|
||||
oXbp:create( , , { 230,160 }, {60, 30} )
|
||||
oXbp:activate := {|| oStatic2:hide(), oCrt:sendMessage( WM_SIZE, 0, 0 ) }
|
||||
|
||||
HB_SYMBOL_UNUSED( oListBox )
|
||||
oRadio := WvgRadioButton():new( oStatic2,, { 10,10 }, { 100,15 } )
|
||||
oRadio:caption := "Com 1"
|
||||
oRadio:selection := .T.
|
||||
oRadio:selected := {|m1,m2,obj| m1:=m1, m2:=m2, Win_MessageBox( , obj:caption + IF( obj:selection, '< S >', '< N >' ) ) }
|
||||
oRadio:create()
|
||||
oRadio := WvgRadioButton():new( oStatic2,, { 10,35 }, { 100,15 } )
|
||||
oRadio:caption := "Com 2"
|
||||
oRadio:create()
|
||||
|
||||
// ListBox
|
||||
//--------------------------- CheckBox ---------------------------\\
|
||||
oCheck := WvgCheckBox():New( oStatic2, , { 10, 70 }, { 100,15 }, , .t. )
|
||||
oCheck:caption := 'First Checkbox'
|
||||
oCheck:create()
|
||||
oCheck:selected := {|m1,m2,o| m1:=m1,m2:=m2, Win_MessageBox( , IF( o:getData(), 'I am selected','I am not selected' ) ) }
|
||||
|
||||
//--------------------------- ListBox -----------------------------\\
|
||||
oListBox := WvgListbox():new()
|
||||
oListBox:create( oStatic, , { 5, 280 }, { 107, 100 } )
|
||||
aeval( { 'Apple','Bat','Cat','Data','Elephant','Thanks','Links','Phantom' }, {|e| oListBox:addItem( e ) } )
|
||||
oListBox:itemSelected := {|| Win_MessageBox( , oListBox:getItem( 2 ) ) }
|
||||
oListBox:create( oStatic, , { 5, 55 }, { 107, 380 } )
|
||||
|
||||
// Pushbuttons
|
||||
oXbp := WvgPushButton():new( oStatic )
|
||||
oXbp:caption := "A"
|
||||
oXbp:create( , , { 20,400 }, {80,30} )
|
||||
oXbp:activate:= {|| Win_MessageBox( , "Pushbutton A" ) }
|
||||
// Pushbuttons
|
||||
oListBox:setColorFG( RGB( 218,61,34 ) )
|
||||
|
||||
aadd( aParts, 'XbpDialog' )
|
||||
aadd( aParts, 'XbpMenuBar' )
|
||||
aadd( aParts, 'XbpToolBar' )
|
||||
aadd( aParts, 'XbpStatusBar' )
|
||||
aadd( aParts, 'XbpStatic' )
|
||||
aadd( aParts, 'XbpTreeView' )
|
||||
aadd( aParts, 'XbpActiveX' )
|
||||
aadd( aParts, 'XbpListBox' )
|
||||
aadd( aParts, 'XbpPushButton' )
|
||||
aadd( aParts, 'XbpCheckBox' )
|
||||
aadd( aParts, 'XbpRadioButton')
|
||||
aadd( aParts, 'DataRef' )
|
||||
|
||||
aeval( aParts, {|e| oListBox:addItem( e ) } )
|
||||
oListBox:itemSelected := {|| Win_MessageBox( , oListBox:getCurItem() ) }
|
||||
|
||||
//--------------------------- PushButton --------------------------\\
|
||||
oXbp := WvgPushButton():new( oStatic )
|
||||
oXbp:caption := "Hide"
|
||||
oXbp:create( , , { 20,440 }, {80,30} )
|
||||
oXbp:activate:= {|| oCom:resize := bComSize, oStatic:hide(), oCrt:sendMessage( WM_SIZE, 0, 0 ) }
|
||||
oXbp:activate:= {|| oStatic:hide(), oCrt:sendMessage( WM_SIZE, 0, 0 ) }
|
||||
|
||||
// Treeview
|
||||
//--------------------------- TreeView ---------------------------\\
|
||||
oTree := WvgTreeView():new( oCrt, , { oCrt:currentSize()[1]-160,oTBar:currentSize()[2]+3 }, ;
|
||||
{ 160, oCrt:currentSize()[2]-;
|
||||
oTBar:currentSize()[2]-oSBar:currentSize()[2]-4 }, , .t. )
|
||||
@@ -2441,22 +2460,28 @@ Function ExecuteActiveX( nActiveX, xParam )
|
||||
oItem2:addItem( "Third level B" )
|
||||
oItem2:addItem( "Third level C" )
|
||||
|
||||
#if 0
|
||||
oItem1:expand( .t. )
|
||||
#else
|
||||
oTree:showExpanded( .t., 2 )
|
||||
#endif
|
||||
|
||||
//--------------------------- Misc Config ------------------------\\
|
||||
oTBar:buttonClick := {|oBtn| IF( oBtn:caption == 'Hide', oStatic:hide(), nil ),;
|
||||
IF( oBtn:caption == 'Show', oStatic:show(), nil ),;
|
||||
IF( oBtn:caption == 'Static', oStatic2:show():toFront(), nil ),;
|
||||
Win_MessageBox( , "Button [" + oBtn:caption + "] clicked!" ) }
|
||||
oCrt:resize := {|| ResizeDialog( oCrt, oTBar, oSBar, oStatic, oCom, oTree ) }
|
||||
|
||||
#if 1
|
||||
// ActiveX Controls
|
||||
//--------------------------- Active-X ---------------------------\\
|
||||
oCom := BuildActiveXControl( nActiveX, oCrt )
|
||||
oCom:resize := {|m1,m2,o,w,x,y,z| m1 := m1, m2 := m2, o := o, ;
|
||||
w := oCrt:currentSize() ,;
|
||||
x := oTBar:currentSize() ,;
|
||||
y := oSBar:currentSize() ,;
|
||||
z := oStatic:currentSize(),;
|
||||
oCom:setPosAndSize( { z[1], x[2] }, { w[1]-z[1]-160, w[2]-x[2]-y[2] }, .t. ), 1 }
|
||||
if hb_isObject( oCom )
|
||||
oCrt:sendMessage( WM_SIZE, 0, 0 )
|
||||
oCrt:show()
|
||||
ExeActiveX( nActiveX, oCom, xParam )
|
||||
ENDIF
|
||||
#else
|
||||
oCrt:sendMessage( WM_SIZE, 0, 0 )
|
||||
oCrt:show()
|
||||
DO WHILE .t.
|
||||
IF inkey() == 27
|
||||
@@ -2468,7 +2493,32 @@ Function ExecuteActiveX( nActiveX, xParam )
|
||||
oCrt:Destroy()
|
||||
Return nil
|
||||
//----------------------------------------------------------------------//
|
||||
Static Function ActiveXBuildMenu( oCrt )
|
||||
STATIC FUNCTION ResizeDialog( oCrt, oTBar, oSBar, oStatic, oCom, oTree )
|
||||
LOCAL aCrt, aTBar, aSBar, aStatic, aCom, aTree
|
||||
LOCAL nH, nT
|
||||
|
||||
aCrt := oCrt:currentSize()
|
||||
aTBar := oTBar:currentSize()
|
||||
aSBar := oSBar:currentSize()
|
||||
aStatic := oStatic:currentSize()
|
||||
aTree := oTree:currentSize()
|
||||
aCom := oCom:currentSize()
|
||||
|
||||
nT := aTBar[2]
|
||||
nH := aCrt[2]-aTBar[2]-aSBar[2]
|
||||
|
||||
IF oStatic:isVisible
|
||||
oStatic:setPosAndSize( { 0, nT+3 }, { 120, nH-4 }, .t. )
|
||||
oCom:setPosAndSize( { 120, nT }, { aCrt[1]-120-150, nH }, .t. )
|
||||
oTree:setPosAndSize( { aCrt[1]-150, nT }, { 150, nH }, .t. )
|
||||
ELSE
|
||||
oCom:setPosAndSize( { 0, nT }, { aCrt[1]-150, nH }, .t. )
|
||||
oTree:setPosAndSize( { aCrt[1]-150, nT }, { 150, nH }, .t. )
|
||||
ENDIF
|
||||
|
||||
RETURN 1
|
||||
//----------------------------------------------------------------------//
|
||||
Static Function ActiveXBuildMenu( oCrt, oStatic, oStatic2 )
|
||||
Local oMenuBar, oSubMenu
|
||||
|
||||
oMenuBar := WvgMenuBar():new( oCrt ):create()
|
||||
@@ -2484,7 +2534,6 @@ Static Function ActiveXBuildMenu( oCrt )
|
||||
oSubMenu:itemSelected := {|mp1| MyFunction( 100+mp1 ) }
|
||||
oMenuBar:addItem( { oSubMenu, NIL } )
|
||||
|
||||
|
||||
// Define submenu in the functional style:
|
||||
// A menu item executes a code block that
|
||||
// calls a function
|
||||
@@ -2492,9 +2541,17 @@ Static Function ActiveXBuildMenu( oCrt )
|
||||
oSubMenu:title := "~Functional"
|
||||
oSubMenu:addItem( { "Play Opening ~1", {|| MyFunction( 1 ) } } )
|
||||
oSubMenu:addItem( { "Play Closing ~2", {|| MyFunction( 2 ) } } )
|
||||
oSubMenu:addItem()
|
||||
oSubMenu:addItem( { "~MessageBox" , {|| MyFunction( 3 ) } } )
|
||||
oMenuBar:addItem( { oSubMenu, NIL } )
|
||||
|
||||
oSubMenu := WvgMenu():new( oMenuBar ):create()
|
||||
oSubMenu:title := "F~eatures"
|
||||
oSubMenu:addItem( { "~Hide or Show Left Panel" , {|| IF( oStatic:isVisible, ;
|
||||
oStatic:hide(), oStatic:show() ), oCrt:sendMessage( WM_SIZE,0,0 ) } } )
|
||||
oSubMenu:addItem( { "~Show My Panel" , {|| oStatic2:show() } } )
|
||||
oMenuBar:addItem( { oSubMenu, NIL } )
|
||||
|
||||
Return nil
|
||||
//----------------------------------------------------------------------//
|
||||
STATIC FUNCTION ActiveXBuildToolBar( oCrt, nActiveX )
|
||||
@@ -2522,12 +2579,10 @@ STATIC FUNCTION ActiveXBuildToolBar( oCrt, nActiveX )
|
||||
oTBar:addItem( "New" , 'c:\harbour\contrib\gtwvg\tests\v_new.bmp' )
|
||||
oTBar:addItem( "Select" , 'c:\harbour\contrib\gtwvg\tests\v_selct1.bmp' )
|
||||
oTBar:addItem( "Calendar" , 'c:\harbour\contrib\gtwvg\tests\v_calend.bmp' )
|
||||
oTBar:addItem( "Lock" , 'c:\harbour\contrib\gtwvg\tests\v_lock.bmp' )
|
||||
oTBar:addItem( "Static" , 'c:\harbour\contrib\gtwvg\tests\v_lock.bmp' )
|
||||
oTBar:addItem( "Index" , 'c:\harbour\contrib\gtwvg\tests\v_index.bmp' )
|
||||
oTBar:addItem( "Calculator", 'c:\harbour\contrib\gtwvg\tests\v_clclt.bmp' )
|
||||
oTBar:addItem( "Notes" , 'c:\harbour\contrib\gtwvg\tests\v_notes1.bmp' )
|
||||
|
||||
oTBar:buttonClick := {|oButton| Win_MessageBox( , "Button [" + oButton:caption + "] clicked!" ) }
|
||||
oTBar:addItem( "Show" , 'c:\harbour\contrib\gtwvg\tests\v_clclt.bmp' )
|
||||
oTBar:addItem( "Hide" , 'c:\harbour\contrib\gtwvg\tests\v_notes1.bmp' )
|
||||
|
||||
RETURN oTBar
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
211
harbour/contrib/gtwvg/wvgcheck.prg
Normal file
211
harbour/contrib/gtwvg/wvgcheck.prg
Normal file
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
* Source file for the Wvg*Classes
|
||||
*
|
||||
* Copyright 2008 Pritpal Bedi <pritpal@vouchcac.com>
|
||||
* http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*
|
||||
* As a special exception, the Harbour Project gives permission for
|
||||
* additional uses of the text contained in its release of Harbour.
|
||||
*
|
||||
* The exception is that, if you link the Harbour libraries with other
|
||||
* files to produce an executable, this does not by itself cause the
|
||||
* resulting executable to be covered by the GNU General Public License.
|
||||
* Your use of that executable is in no way restricted on account of
|
||||
* linking the Harbour library code into it.
|
||||
*
|
||||
* This exception does not however invalidate any other reasons why
|
||||
* the executable file might be covered by the GNU General Public License.
|
||||
*
|
||||
* This exception applies only to the code released by the Harbour
|
||||
* Project under the name Harbour. If you copy code from other
|
||||
* Harbour Project or Free Software Foundation releases into a copy of
|
||||
* Harbour, as the General Public License permits, the exception does
|
||||
* not apply to the code that you add in this way. To avoid misleading
|
||||
* anyone as to the status of such modified files, you must delete
|
||||
* this exception notice from them.
|
||||
*
|
||||
* If you write modifications of your own for Harbour, it is your choice
|
||||
* whether to permit this exception to apply to your modifications.
|
||||
* If you do not wish that, delete this exception notice.
|
||||
*
|
||||
*/
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//
|
||||
// EkOnkar
|
||||
// ( The LORD is ONE )
|
||||
//
|
||||
// Xbase++ xbpPushButton Compatible Class
|
||||
//
|
||||
// Pritpal Bedi <pritpal@vouchcac.com>
|
||||
// 05Dec2008
|
||||
//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#include 'hbclass.ch'
|
||||
#include 'common.ch'
|
||||
#include 'inkey.ch'
|
||||
#include 'hbgtinfo.ch'
|
||||
|
||||
#include 'hbgtwvg.ch'
|
||||
#include 'wvtwin.ch'
|
||||
#include 'wvgparts.ch'
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __DBG_PARTS__
|
||||
#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
CLASS WvgCheckBox INHERIT WvgWindow, DataRef
|
||||
|
||||
DATA autosize INIT .F.
|
||||
DATA caption INIT ''
|
||||
DATA pointerFocus INIT .T.
|
||||
DATA selection INIT .F.
|
||||
|
||||
METHOD new()
|
||||
METHOD create()
|
||||
METHOD configure()
|
||||
METHOD destroy()
|
||||
|
||||
//METHOD editBuffer() INLINE ( Win_Button_GetCheck( ::hWnd ) == BST_CHECKED )
|
||||
//METHOD getData() INLINE ( Win_Button_GetCheck( ::hWnd ) == BST_CHECKED )
|
||||
//METHOD setData( lCheck ) INLINE ::sendMessage( BM_SETCHECK, IF( lCheck, BST_CHECKED, BST_UNCHECKED ), 0 )
|
||||
METHOD setCaption( cCaption )
|
||||
|
||||
ACCESS selected INLINE ::sl_lbClick
|
||||
ASSIGN selected( bBlock ) INLINE ::sl_lbClick := bBlock
|
||||
|
||||
METHOD handleEvent( nEvent, aInfo )
|
||||
|
||||
ENDCLASS
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgCheckBox
|
||||
|
||||
::Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
|
||||
::style := WS_CHILD + BS_PUSHBUTTON + BS_AUTOCHECKBOX //+ BS_NOTIFY
|
||||
::className := 'BUTTON'
|
||||
::objType := objTypeCheckBox
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgCheckBox
|
||||
|
||||
::Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
|
||||
IF ::visible
|
||||
::style += WS_VISIBLE
|
||||
ENDIF
|
||||
|
||||
::oParent:AddChild( SELF )
|
||||
|
||||
::createControl()
|
||||
|
||||
::nWndProc := hb_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
|
||||
::setCaption( ::caption )
|
||||
|
||||
IF ::selection
|
||||
::sendMessage( BM_SETCHECK, BST_CHECKED, 0 )
|
||||
ENDIF
|
||||
|
||||
::editBuffer := ( Win_Button_GetCheck( ::hWnd ) == BST_CHECKED )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD handleEvent( nMessage, aNM ) CLASS WvgCheckBox
|
||||
|
||||
hb_ToOutDebug( " %s:handleEvent( %i )", __ObjGetClsName( self ), nMessage )
|
||||
|
||||
SWITCH nMessage
|
||||
|
||||
CASE WM_COMMAND
|
||||
IF aNM[ NMH_code ] == BN_CLICKED
|
||||
::editBuffer := ( Win_Button_GetCheck( ::hWnd ) == BST_CHECKED )
|
||||
|
||||
IF hb_isBlock( ::sl_lbClick )
|
||||
eval( ::sl_lbClick, NIL, NIL, self )
|
||||
RETURN 0
|
||||
|
||||
ENDIF
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
END
|
||||
|
||||
RETURN 1
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD destroy() CLASS WvgCheckBox
|
||||
|
||||
hb_ToOutDebug( " %s:destroy()", __objGetClsName() )
|
||||
|
||||
IF len( ::aChildren ) > 0
|
||||
aeval( ::aChildren, {|o| o:destroy() } )
|
||||
ENDIF
|
||||
IF Win_IsWindow( ::hWnd )
|
||||
Win_DestroyWindow( ::hWnd )
|
||||
ENDIF
|
||||
HB_FreeCallback( ::nWndProc )
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgCheckBox
|
||||
|
||||
::Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD setCaption( xCaption ) CLASS WvgCheckBox
|
||||
|
||||
IF hb_isChar( xCaption )
|
||||
::caption := xCaption
|
||||
Win_SendMessageText( ::hWnd, WM_SETTEXT, 0, ::caption )
|
||||
ENDIF
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
165
harbour/contrib/gtwvg/wvgdatar.prg
Normal file
165
harbour/contrib/gtwvg/wvgdatar.prg
Normal file
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
* Source file for the Wvg*Classes
|
||||
*
|
||||
* Copyright 2008 Pritpal Bedi <pritpal@vouchcac.com>
|
||||
* http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*
|
||||
* As a special exception, the Harbour Project gives permission for
|
||||
* additional uses of the text contained in its release of Harbour.
|
||||
*
|
||||
* The exception is that, if you link the Harbour libraries with other
|
||||
* files to produce an executable, this does not by itself cause the
|
||||
* resulting executable to be covered by the GNU General Public License.
|
||||
* Your use of that executable is in no way restricted on account of
|
||||
* linking the Harbour library code into it.
|
||||
*
|
||||
* This exception does not however invalidate any other reasons why
|
||||
* the executable file might be covered by the GNU General Public License.
|
||||
*
|
||||
* This exception applies only to the code released by the Harbour
|
||||
* Project under the name Harbour. If you copy code from other
|
||||
* Harbour Project or Free Software Foundation releases into a copy of
|
||||
* Harbour, as the General Public License permits, the exception does
|
||||
* not apply to the code that you add in this way. To avoid misleading
|
||||
* anyone as to the status of such modified files, you must delete
|
||||
* this exception notice from them.
|
||||
*
|
||||
* If you write modifications of your own for Harbour, it is your choice
|
||||
* whether to permit this exception to apply to your modifications.
|
||||
* If you do not wish that, delete this exception notice.
|
||||
*
|
||||
*/
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//
|
||||
// EkOnkar
|
||||
// ( The LORD is ONE )
|
||||
//
|
||||
// Xbase++ dataRef Compatible Class
|
||||
//
|
||||
// Pritpal Bedi <pritpal@vouchcac.com>
|
||||
// 06Dec2008
|
||||
//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#include 'hbclass.ch'
|
||||
#include 'common.ch'
|
||||
#include 'inkey.ch'
|
||||
#include 'hbgtinfo.ch'
|
||||
|
||||
#include 'hbgtwvg.ch'
|
||||
#include 'wvtwin.ch'
|
||||
#include 'wvgparts.ch'
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __DBG_PARTS__
|
||||
#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
CLASS DataRef
|
||||
|
||||
DATA changed INIT .F.
|
||||
DATA dataLink INIT NIL
|
||||
DATA lastValid INIT .T.
|
||||
DATA sl_undo INIT NIL
|
||||
DATA undoBuffer INIT NIL
|
||||
DATA sl_validate INIT NIL
|
||||
|
||||
METHOD new()
|
||||
|
||||
DATA sl_editBuffer
|
||||
DATA sl_buffer
|
||||
|
||||
ACCESS editBuffer INLINE ::sl_editBuffer
|
||||
ASSIGN editBuffer( xData ) INLINE ::sl_editBuffer := xData
|
||||
|
||||
METHOD getData()
|
||||
METHOD setData()
|
||||
METHOD undo()
|
||||
|
||||
METHOD validate( xParam ) SETGET
|
||||
|
||||
ENDCLASS
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD new() CLASS DataRef
|
||||
|
||||
RETURN self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD getData() CLASS DataRef
|
||||
|
||||
IF hb_isBlock( ::dataLink )
|
||||
eval( ::dataLink, ::sl_editBuffer )
|
||||
ENDIF
|
||||
|
||||
RETURN ::sl_editBuffer
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD setData( xValue ) CLASS DataRef
|
||||
|
||||
IF hb_isBlock( ::dataLink )
|
||||
::sl_editBuffer := eval( ::dataLink )
|
||||
|
||||
ELSEIF xValue <> NIL
|
||||
::sl_editBuffer := xValue
|
||||
|
||||
ENDIF
|
||||
|
||||
SWITCH ::className
|
||||
CASE 'BUTTON'
|
||||
::sendMessage( BM_SETCHECK, IF( ::sl_editBuffer, BST_CHECKED, BST_UNCHECKED ), 0 )
|
||||
EXIT
|
||||
END
|
||||
|
||||
RETURN ::sl_editBuffer
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD undo() CLASS DataRef
|
||||
|
||||
RETURN .f.
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD validate( xParam ) CLASS DataRef
|
||||
|
||||
IF PCount() == 0 .and. hb_isBlock( ::sl_validate )
|
||||
RETURN eval( ::sl_validate, self )
|
||||
ELSEIF hb_isBlock( xParam )
|
||||
::sl_validate := xParam
|
||||
ENDIF
|
||||
|
||||
RETURN .t.
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -114,6 +114,16 @@ static const int K_Ctrl[] =
|
||||
|
||||
static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifdef __DBG_GTWGU__
|
||||
#define WVGDEBUG( d ) hb_ToOutDebug d
|
||||
#else
|
||||
#define WVGDEBUG( d )
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
static void hb_gt_wvt_RegisterClass( HINSTANCE hInstance )
|
||||
{
|
||||
WNDCLASS wndclass;
|
||||
@@ -145,7 +155,7 @@ static PHB_GTWVT hb_gt_wvt_Find( HWND hWnd )
|
||||
int iCount = s_wvtCount, iPos = 0;
|
||||
PHB_GTWVT pWVT = NULL;
|
||||
|
||||
//hb_ToOutDebug( "hb_gt_wvt_Find()" );
|
||||
//WVGDEBUG( ( "hb_gt_wvt_Find()" ) );
|
||||
|
||||
HB_WVT_LOCK
|
||||
|
||||
@@ -172,9 +182,7 @@ static BOOL hb_gt_wvt_Alloc( PHB_GTWVT pWVT )
|
||||
{
|
||||
BOOL fOK = FALSE;
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_Alloc()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_Alloc()" ) );
|
||||
|
||||
HB_WVT_LOCK
|
||||
|
||||
@@ -206,9 +214,7 @@ static void hb_gt_wvt_Free( PHB_GTWVT pWVT )
|
||||
{
|
||||
HB_WVT_LOCK
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_Free()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_Free()" ) );
|
||||
|
||||
s_wvtWindows[ pWVT->iHandle ] = NULL;
|
||||
|
||||
@@ -239,9 +245,7 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT, HINSTANCE hInstance, int iCmdShow )
|
||||
PHB_GTWVT pWVT;
|
||||
OSVERSIONINFO osvi;
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_New()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_New()" ) );
|
||||
|
||||
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
|
||||
GetVersionEx( &osvi );
|
||||
@@ -324,9 +328,7 @@ static int hb_gt_wvt_FireEvent( PHB_GTWVT pWVT, int nEvent, PHB_ITEM pParams )
|
||||
{
|
||||
int nResult = 0; /* Unhandled */
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_FireEvent()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_FireEvent()" ) );
|
||||
|
||||
if( pWVT->pGT->pNotifierBlock )
|
||||
{
|
||||
@@ -350,9 +352,7 @@ static void hb_gt_wvt_FireMenuEvent( PHB_GTWVT pWVT, int iMode, int menuIndex )
|
||||
{
|
||||
PHB_ITEM pEvParams = hb_itemNew( NULL );
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_FireMenuEvent()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_FireMenuEvent()" ) );
|
||||
|
||||
hb_arrayNew( pEvParams, 2 );
|
||||
hb_arraySetNI( pEvParams, 1, iMode );
|
||||
@@ -368,9 +368,7 @@ static void hb_gt_wvt_AddCharToInputQueue( PHB_GTWVT pWVT, int iKey )
|
||||
{
|
||||
int iPos = pWVT->keyPointerIn;
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_AddCharToInputQueue()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_AddCharToInputQueue()" ) );
|
||||
|
||||
if( iKey == K_MOUSEMOVE || iKey == K_NCMOUSEMOVE )
|
||||
{
|
||||
@@ -399,7 +397,8 @@ hb_ToOutDebug( "wvggui:hb_gt_wvt_AddCharToInputQueue()" );
|
||||
|
||||
static BOOL hb_gt_wvt_GetCharFromInputQueue( PHB_GTWVT pWVT, int * iKey )
|
||||
{
|
||||
//hb_ToOutDebug( "wvggui:hb_gt_wvt_GetCharFromInputQueue()" );
|
||||
//WVGDEBUG( ( "wvggui:hb_gt_wvt_GetCharFromInputQueue()" ) );
|
||||
|
||||
if( pWVT->keyPointerOut != pWVT->keyPointerIn )
|
||||
{
|
||||
*iKey = pWVT->Keys[ pWVT->keyPointerOut ];
|
||||
@@ -418,9 +417,7 @@ static void hb_gt_wvt_TranslateKey( PHB_GTWVT pWVT, int key, int shiftkey, int a
|
||||
{
|
||||
int nVirtKey = GetKeyState( VK_MENU );
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_TranslateKey()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_TranslateKey()" ) );
|
||||
|
||||
if( nVirtKey & 0x8000 ) /* alt + key */
|
||||
{
|
||||
@@ -449,9 +446,7 @@ static int hb_gt_wvt_key_ansi_to_oem( int c )
|
||||
BYTE pszAnsi[ 2 ];
|
||||
BYTE pszOem[ 2 ];
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_key_ansi_to_oem()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_key_ansi_to_oem()" ) );
|
||||
|
||||
pszAnsi[ 0 ] = ( BYTE ) c;
|
||||
pszAnsi[ 1 ] = 0;
|
||||
@@ -465,9 +460,7 @@ static int hb_gt_wvt_SizeChanged( PHB_GTWVT pWVT )
|
||||
PHB_ITEM pEvParams = hb_itemNew( NULL );
|
||||
RECT rc;
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_SizeChanged()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_SizeChanged()" ) );
|
||||
|
||||
GetClientRect( pWVT->hWnd, &rc );
|
||||
|
||||
@@ -491,9 +484,7 @@ static void hb_gt_wvt_SetWindowTitle( HWND hWnd, const char * title )
|
||||
{
|
||||
LPTSTR text = HB_TCHAR_CONVTO( title );
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_SetWindowTitle()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_SetWindowTitle()" ) );
|
||||
|
||||
SetWindowText( hWnd, text );
|
||||
HB_TCHAR_FREE( text );
|
||||
@@ -504,9 +495,7 @@ static BOOL hb_gt_wvt_GetWindowTitle( HWND hWnd, char ** title )
|
||||
TCHAR buffer[WVT_MAX_TITLE_SIZE];
|
||||
int iResult;
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_GetWindowTitle()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_GetWindowTitle()" ) );
|
||||
|
||||
iResult = GetWindowText( hWnd, buffer, WVT_MAX_TITLE_SIZE );
|
||||
if( iResult > 0 )
|
||||
@@ -527,9 +516,7 @@ static void hb_gt_wvt_MouseEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam, L
|
||||
SHORT keyCode = 0;
|
||||
SHORT keyState;
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_MouseEvent()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_MouseEvent()" ) );
|
||||
|
||||
HB_SYMBOL_UNUSED( wParam );
|
||||
if( ! pWVT->MouseMove && ( message == WM_MOUSEMOVE || message == WM_NCMOUSEMOVE ) )
|
||||
@@ -643,10 +630,7 @@ hb_ToOutDebug( "wvggui:hb_gt_wvt_MouseEvent()" );
|
||||
|
||||
static BOOL hb_gt_wvt_KeyEvent( PHB_GTWVT pWVT, UINT message, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_KeyEvent()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_KeyEvent()" ) );
|
||||
|
||||
switch( message )
|
||||
{
|
||||
@@ -984,15 +968,10 @@ static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wPara
|
||||
{
|
||||
PHB_GTWVT pWVT = hb_gt_wvt_Find( hWnd );
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
//hb_ToOutDebug( "wvggui:hb_gt_wvt_WndPro( %i %i %i %i )", hWnd, message, wParam, lParam );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:wndproc( %i %i %i %i )", hWnd, message, wParam, lParam ) );
|
||||
|
||||
if( pWVT ) switch( message )
|
||||
{
|
||||
//case WM_PAINT:
|
||||
//return DefWindowProc( hWnd, message, wParam, lParam );;
|
||||
|
||||
case WM_SETFOCUS:
|
||||
{
|
||||
PHB_ITEM pEvParams = hb_itemNew( NULL );
|
||||
@@ -1200,9 +1179,7 @@ static HWND hb_gt_wvt_CreateWindow( PHB_GTWVT pWVT )
|
||||
HWND hWnd, hWndParent;
|
||||
LPTSTR szAppName;
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_CreateWindow()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_CreateWindow()" ) );
|
||||
|
||||
szAppName = HB_TCHAR_CONVTO( hb_cmdargARGV()[ 0 ] );
|
||||
|
||||
@@ -1261,10 +1238,7 @@ hb_ToOutDebug( "wvggui:hb_gt_wvt_CreateWindow()" );
|
||||
|
||||
static BOOL hb_gt_wvt_CreateConsoleWindow( PHB_GTWVT pWVT )
|
||||
{
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_CreateConsoleWindow()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_CreateConsoleWindow()" ) );
|
||||
|
||||
if( !pWVT->hWnd )
|
||||
{
|
||||
@@ -1310,9 +1284,7 @@ static void hb_gt_wvt_Init( PHB_GT pGT, HB_FHANDLE hFilenoStdin, HB_FHANDLE hFil
|
||||
|
||||
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Init(%p,%p,%p,%p)", pGT, ( void * ) ( HB_PTRDIFF ) hFilenoStdin, ( void * ) ( HB_PTRDIFF ) hFilenoStdout, ( void * ) ( HB_PTRDIFF ) hFilenoStderr ) );
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_Init()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_Init()" ) );
|
||||
|
||||
if( ! hb_winmainArgGet( &hInstance, NULL, &iCmdShow ) )
|
||||
hb_errInternal( 10001, "It's not a GUI program", NULL, NULL );
|
||||
@@ -1339,10 +1311,7 @@ static void hb_gt_wvt_Exit( PHB_GT pGT )
|
||||
PHB_GTWVT pWVT;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Exit(%p)", pGT));
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_Exit()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_Exit()" ) );
|
||||
|
||||
pWVT = HB_GTWVT_GET( pGT );
|
||||
HB_GTSUPER_EXIT( pGT );
|
||||
@@ -1362,10 +1331,7 @@ static int hb_gt_wvt_ReadKey( PHB_GT pGT, int iEventMask )
|
||||
BOOL fKey;
|
||||
|
||||
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_ReadKey(%p,%d)", pGT, iEventMask ) );
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
//hb_ToOutDebug( "wvggui:hb_gt_wvt_ReadKey()" );
|
||||
#endif
|
||||
//WVGDEBUG( ( "wvggui:hb_gt_wvt_ReadKey()" ) );
|
||||
|
||||
HB_SYMBOL_UNUSED( iEventMask ); /* we ignore the eventmask! */
|
||||
|
||||
@@ -1384,10 +1350,7 @@ static int hb_gt_wvt_ReadKey( PHB_GT pGT, int iEventMask )
|
||||
static void hb_gt_wvt_Tone( PHB_GT pGT, double dFrequency, double dDuration )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration));
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_Tone()" );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_Tone()" ) );
|
||||
|
||||
HB_SYMBOL_UNUSED( pGT );
|
||||
|
||||
@@ -1401,11 +1364,8 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
|
||||
PHB_GTWVT pWVT;
|
||||
int iVal;
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_wvt_Info()" );
|
||||
#endif
|
||||
|
||||
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Info(%p,%d,%p)", pGT, iType, pInfo ) );
|
||||
WVGDEBUG( ( "wvggui:hb_gt_wvt_Info()" ) );
|
||||
|
||||
pWVT = HB_GTWVT_GET( pGT );
|
||||
|
||||
@@ -2191,10 +2151,7 @@ hb_ToOutDebug( "wvggui:hb_gt_wvt_Info()" );
|
||||
static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_FuncInit(%p)", pFuncTable));
|
||||
|
||||
#ifdef __DBG_GUI_C__
|
||||
hb_ToOutDebug( "wvggui:hb_gt_FuncInit() " );
|
||||
#endif
|
||||
WVGDEBUG( ( "wvggui:hb_gt_FuncInit() " ) );
|
||||
|
||||
pFuncTable->Init = hb_gt_wvt_Init;
|
||||
pFuncTable->Exit = hb_gt_wvt_Exit;
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __xDBG_TB__
|
||||
# xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#ifndef __DBG_PARTS__
|
||||
#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -184,13 +184,13 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgLi
|
||||
|
||||
::createControl()
|
||||
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -198,11 +198,13 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgLi
|
||||
METHOD handleEvent( nMessage, aNM ) CLASS WvgListBox
|
||||
LOCAL nHandled := 1
|
||||
|
||||
hb_ToOutDebug( " %s:handleEvent( %i )", __ObjGetClsName( self ), nMessage )
|
||||
|
||||
SWITCH nMessage
|
||||
|
||||
CASE WM_COMMAND
|
||||
IF aNM[ 1 ] == LBN_SELCHANGE
|
||||
//::nCurSelected := ::sendMessage( LB_GETCURSEL, 0, 0 ) + 1
|
||||
::nCurSelected := Win_LbGetCurSel( ::hWnd )+ 1
|
||||
IF hb_isBlock( ::sl_itemSelected )
|
||||
eval( ::sl_itemSelected, NIL, NIL, self )
|
||||
ENDIF
|
||||
@@ -229,6 +231,8 @@ METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS Wv
|
||||
|
||||
METHOD destroy() CLASS WvgListBox
|
||||
|
||||
hb_ToOutDebug( " %s:destroy()", __objGetClsName() )
|
||||
|
||||
IF Len( ::aChildren ) > 0
|
||||
aeval( ::aChildren, {|o| o:destroy() } )
|
||||
::aChildren := {}
|
||||
@@ -262,8 +266,6 @@ filename, or directory name.
|
||||
GetListBoxInfo
|
||||
Retrieves information about the specified list box.
|
||||
|
||||
|
||||
|
||||
Messages
|
||||
========
|
||||
|
||||
@@ -582,6 +584,5 @@ Specifies that the owner of the list box receives WM_VKEYTOITEM messages wheneve
|
||||
the user presses a key and the list box has the input focus. This enables an application
|
||||
to perform special processing on the keyboard input.
|
||||
|
||||
|
||||
#endif
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -74,6 +74,8 @@
|
||||
#define objTypeStatic 12
|
||||
#define objTypeTreeView 13
|
||||
#define objTypeTreeViewItem 14
|
||||
#define objTypeCheckBox 15
|
||||
#define objTypeRadioButton 16
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
// NMHDR info
|
||||
@@ -164,6 +166,12 @@
|
||||
|
||||
#define WVGLISTBOX_MM_SINGLE 1
|
||||
|
||||
// Generic Pres Parameters
|
||||
#define WVG_PP_FGCLR 2
|
||||
#define WVG_PP_BGCLR 4
|
||||
#define WVG_PP_COMPOUNDNAME 15
|
||||
#define WVG_PP_FONT 16
|
||||
|
||||
#endif // #ifndef _WVG_CH
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
// EkOnkar
|
||||
// ( The LORD is ONE )
|
||||
//
|
||||
// Xbase++ xbpPushButton Compatible Class
|
||||
// Xbase++ xbpPushButton Compatible Class
|
||||
//
|
||||
// Pritpal Bedi <pritpal@vouchcac.com>
|
||||
// 26Nov2008
|
||||
@@ -76,8 +76,8 @@
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __DBG_TB__
|
||||
# xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#ifndef __DBG_PARTS__
|
||||
#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -89,7 +89,7 @@ CLASS WvgPushButton INHERIT WvgWindow
|
||||
DATA caption INIT ''
|
||||
DATA pointerFocus INIT .T.
|
||||
DATA preSelect INIT .F.
|
||||
DATA drawMode INIT 0 //WVG_DRAW_NORMAL
|
||||
DATA drawMode INIT WVG_DRAW_NORMAL
|
||||
DATA default INIT .F.
|
||||
DATA cancel INIT .F.
|
||||
|
||||
@@ -103,9 +103,6 @@ CLASS WvgPushButton INHERIT WvgWindow
|
||||
METHOD activate() SETGET
|
||||
METHOD draw() SETGET
|
||||
|
||||
DATA nWndProc
|
||||
DATA nOldProc INIT 0
|
||||
|
||||
METHOD handleEvent( nEvent, aInfo )
|
||||
|
||||
ENDCLASS
|
||||
@@ -135,25 +132,27 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgPu
|
||||
|
||||
::createControl()
|
||||
|
||||
::nWndProc := hb_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
|
||||
::setCaption( ::caption )
|
||||
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD handleEvent( nEvent, aInfo ) CLASS WvgPushButton
|
||||
METHOD handleEvent( nMessage, aInfo ) CLASS WvgPushButton
|
||||
LOCAL nHandled := 0
|
||||
|
||||
hb_ToOutDebug( " %s:handleEvent( %i )", __ObjGetClsName( self ), nMessage )
|
||||
|
||||
HB_SYMBOL_UNUSED( aInfo )
|
||||
|
||||
SWITCH nEvent
|
||||
SWITCH nMessage
|
||||
|
||||
CASE WM_SIZE
|
||||
IF hb_isBlock( ::sl_resize )
|
||||
@@ -180,7 +179,7 @@ METHOD handleEvent( nEvent, aInfo ) CLASS WvgPushButton
|
||||
|
||||
METHOD destroy() CLASS WvgPushButton
|
||||
|
||||
hb_ToOutDebug( "WvgPushButton:destroy()" )
|
||||
hb_ToOutDebug( " %s:destroy()", __objGetClsName() )
|
||||
|
||||
IF len( ::aChildren ) > 0
|
||||
aeval( ::aChildren, {|o| o:destroy() } )
|
||||
|
||||
206
harbour/contrib/gtwvg/wvgradio.prg
Normal file
206
harbour/contrib/gtwvg/wvgradio.prg
Normal file
@@ -0,0 +1,206 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
* Source file for the Wvg*Classes
|
||||
*
|
||||
* Copyright 2008 Pritpal Bedi <pritpal@vouchcac.com>
|
||||
* http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*
|
||||
* As a special exception, the Harbour Project gives permission for
|
||||
* additional uses of the text contained in its release of Harbour.
|
||||
*
|
||||
* The exception is that, if you link the Harbour libraries with other
|
||||
* files to produce an executable, this does not by itself cause the
|
||||
* resulting executable to be covered by the GNU General Public License.
|
||||
* Your use of that executable is in no way restricted on account of
|
||||
* linking the Harbour library code into it.
|
||||
*
|
||||
* This exception does not however invalidate any other reasons why
|
||||
* the executable file might be covered by the GNU General Public License.
|
||||
*
|
||||
* This exception applies only to the code released by the Harbour
|
||||
* Project under the name Harbour. If you copy code from other
|
||||
* Harbour Project or Free Software Foundation releases into a copy of
|
||||
* Harbour, as the General Public License permits, the exception does
|
||||
* not apply to the code that you add in this way. To avoid misleading
|
||||
* anyone as to the status of such modified files, you must delete
|
||||
* this exception notice from them.
|
||||
*
|
||||
* If you write modifications of your own for Harbour, it is your choice
|
||||
* whether to permit this exception to apply to your modifications.
|
||||
* If you do not wish that, delete this exception notice.
|
||||
*
|
||||
*/
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//
|
||||
// EkOnkar
|
||||
// ( The LORD is ONE )
|
||||
//
|
||||
// Xbase++ xbpPushButton Compatible Class
|
||||
//
|
||||
// Pritpal Bedi <pritpal@vouchcac.com>
|
||||
// 06Dec2008
|
||||
//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#include 'hbclass.ch'
|
||||
#include 'common.ch'
|
||||
#include 'inkey.ch'
|
||||
#include 'hbgtinfo.ch'
|
||||
|
||||
#include 'hbgtwvg.ch'
|
||||
#include 'wvtwin.ch'
|
||||
#include 'wvgparts.ch'
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __DBG_PARTS__
|
||||
#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
CLASS WvgRadioButton INHERIT WvgWindow
|
||||
|
||||
DATA autosize INIT .F.
|
||||
DATA caption INIT ''
|
||||
DATA pointerFocus INIT .T.
|
||||
DATA selection INIT .F.
|
||||
|
||||
METHOD new()
|
||||
METHOD create()
|
||||
METHOD configure()
|
||||
METHOD destroy()
|
||||
|
||||
METHOD editBuffer() INLINE ( Win_Button_GetCheck( ::hWnd ) == BST_CHECKED )
|
||||
METHOD getData() INLINE ( Win_Button_GetCheck( ::hWnd ) == BST_CHECKED )
|
||||
METHOD setData( lCheck ) INLINE ::sendMessage( BM_SETCHECK, IF( lCheck, BST_CHECKED, BST_UNCHECKED ), 0 )
|
||||
METHOD setCaption( cCaption )
|
||||
|
||||
ACCESS selected INLINE ::sl_lbClick
|
||||
ASSIGN selected( bBlock ) INLINE ::sl_lbClick := bBlock
|
||||
|
||||
METHOD handleEvent( nEvent, aInfo )
|
||||
|
||||
ENDCLASS
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgRadioButton
|
||||
|
||||
::Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
|
||||
::style := WS_CHILD + BS_AUTORADIOBUTTON
|
||||
::className := 'BUTTON'
|
||||
::objType := objTypeRadioButton
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgRadioButton
|
||||
|
||||
::Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
|
||||
IF ::visible
|
||||
::style += WS_VISIBLE
|
||||
ENDIF
|
||||
|
||||
::oParent:addChild( SELF )
|
||||
|
||||
::createControl()
|
||||
|
||||
::nWndProc := hb_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
|
||||
::setCaption( ::caption )
|
||||
|
||||
IF ::selection
|
||||
::sendMessage( BM_SETCHECK, BST_CHECKED, 0 )
|
||||
ENDIF
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD handleEvent( nMessage, aNM ) CLASS WvgRadioButton
|
||||
|
||||
hb_ToOutDebug( " %s:handleEvent( %i )", __objGetClsName( self ), nMessage )
|
||||
|
||||
SWITCH nMessage
|
||||
|
||||
CASE WM_COMMAND
|
||||
IF aNM[ NMH_code ] == BN_CLICKED
|
||||
IF hb_isBlock( ::sl_lbClick )
|
||||
eval( ::sl_lbClick, NIL, NIL, self )
|
||||
RETURN 0
|
||||
ENDIF
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
END
|
||||
|
||||
RETURN 1
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD destroy() CLASS WvgRadioButton
|
||||
|
||||
hb_ToOutDebug( " %s:destroy()", __objGetClsName( self ) )
|
||||
|
||||
IF len( ::aChildren ) > 0
|
||||
aeval( ::aChildren, {|o| o:destroy() } )
|
||||
ENDIF
|
||||
IF Win_IsWindow( ::hWnd )
|
||||
Win_DestroyWindow( ::hWnd )
|
||||
ENDIF
|
||||
HB_FreeCallback( ::nWndProc )
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgRadioButton
|
||||
|
||||
::Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD setCaption( xCaption ) CLASS WvgRadioButton
|
||||
|
||||
IF hb_isChar( xCaption )
|
||||
::caption := xCaption
|
||||
Win_SendMessageText( ::hWnd, WM_SETTEXT, 0, ::caption )
|
||||
ENDIF
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __DBG_TB__
|
||||
# xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#ifndef __DBG_PARTS__
|
||||
#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -103,9 +103,6 @@ CLASS WvgStatusBar INHERIT WvgActiveXControl
|
||||
METHOD panelClick() SETGET
|
||||
METHOD panelDblClick() SETGET
|
||||
|
||||
DATA nOldProc INIT 0
|
||||
DATA nWndProc
|
||||
|
||||
METHOD handleEvent()
|
||||
|
||||
ENDCLASS
|
||||
@@ -140,14 +137,14 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgSt
|
||||
|
||||
::createControl()
|
||||
|
||||
::addItem( , , , , , -1 )
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
::addItem( , , , , , -1 )
|
||||
|
||||
RETURN Self
|
||||
|
||||
@@ -157,6 +154,8 @@ METHOD handleEvent( nMessage, aNM ) CLASS WvgStatusBar
|
||||
LOCAL nHandled := 1
|
||||
LOCAL nObj, aNMH
|
||||
|
||||
hb_ToOutDebug( " %s:handleEvent( %i )", __ObjGetClsName( self ), nMessage )
|
||||
|
||||
SWITCH nMessage
|
||||
|
||||
CASE WM_SIZE
|
||||
@@ -199,7 +198,8 @@ METHOD handleEvent( nMessage, aNM ) CLASS WvgStatusBar
|
||||
|
||||
METHOD destroy() CLASS WvgStatusBar
|
||||
LOCAL i, nItems
|
||||
hb_ToOutDebug( "WvgStatusBar:destroy()" )
|
||||
|
||||
hb_ToOutDebug( " %s:destroy()", __objGetClsName() )
|
||||
|
||||
IF ( nItems := Len( ::aItems ) ) > 0
|
||||
FOR i := 1 TO nItems
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __xDBG_TB__
|
||||
# xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#ifndef __DBG_PARTS__
|
||||
//#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -99,9 +99,6 @@ CLASS WvgStatic INHERIT WvgWindow
|
||||
|
||||
METHOD setCaption( xCaption, cDll )
|
||||
|
||||
DATA nOldProc INIT 0
|
||||
DATA nWndProc
|
||||
|
||||
METHOD handleEvent()
|
||||
|
||||
ENDCLASS
|
||||
@@ -133,28 +130,45 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgSt
|
||||
::style += WS_VISIBLE
|
||||
ENDIF
|
||||
|
||||
#if 0
|
||||
SS_ETCHEDFRAME
|
||||
SS_SUNKEN
|
||||
SS_LEFTNOWORDWRAP
|
||||
SS_SIMPLE
|
||||
SS_CENTERIMAGE
|
||||
SS_REALSIZEIMAGE
|
||||
SS_ENHMETAFILE
|
||||
SS_ETCHEDHORZ
|
||||
SS_ETCHEDVERT
|
||||
SS_RIGHTJUST
|
||||
#endif
|
||||
|
||||
|
||||
SWITCH ::type
|
||||
CASE WVGSTATIC_TYPE_TEXT
|
||||
IF ( Win_AND( ::options, WVGSTATIC_TEXT_LEFT ) == WVGSTATIC_TEXT_LEFT )
|
||||
IF ( hb_bitAnd( ::options, WVGSTATIC_TEXT_LEFT ) == WVGSTATIC_TEXT_LEFT )
|
||||
::style += SS_LEFT //+ SS_LEFTNOWORDWRAP
|
||||
ENDIF
|
||||
IF ( Win_AND( ::options, WVGSTATIC_TEXT_RIGHT ) == WVGSTATIC_TEXT_RIGHT )
|
||||
IF ( hb_bitAnd( ::options, WVGSTATIC_TEXT_RIGHT ) == WVGSTATIC_TEXT_RIGHT )
|
||||
::style += SS_RIGHT
|
||||
ENDIF
|
||||
IF ( Win_AND( ::options, WVGSTATIC_TEXT_CENTER ) == WVGSTATIC_TEXT_CENTER )
|
||||
IF ( hb_bitAnd( ::options, WVGSTATIC_TEXT_CENTER ) == WVGSTATIC_TEXT_CENTER )
|
||||
::style += SS_CENTER
|
||||
ENDIF
|
||||
IF ( Win_AND( ::options, WVGSTATIC_TEXT_WORDBREAK ) == WVGSTATIC_TEXT_WORDBREAK )
|
||||
IF ( hb_bitAnd( ::options, WVGSTATIC_TEXT_WORDBREAK ) == WVGSTATIC_TEXT_WORDBREAK )
|
||||
::style -= SS_LEFTNOWORDWRAP
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE WVGSTATIC_TYPE_GROUPBOX
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_ICON
|
||||
::style += SS_ICON
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_SYSICON
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_BITMAP
|
||||
::style += SS_BITMAP
|
||||
IF ::options == WVGSTATIC_BITMAP_TILED
|
||||
|
||||
ELSEIF ::options == WVGSTATIC_BITMAP_SCALED
|
||||
@@ -164,54 +178,73 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgSt
|
||||
ENDIF
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_FGNDRECT
|
||||
::style += SS_WHITERECT
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_BGNDRECT
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_FGNDFRAME
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_BGNDFRAME
|
||||
::style += SS_BLACKRECT
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_HALFTONERECT
|
||||
::style += SS_GRAYRECT
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_FGNDFRAME
|
||||
::style += SS_WHITEFRAME
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_BGNDFRAME
|
||||
::style += SS_BLACKFRAME
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_HALFTONEFRAME
|
||||
::style += SS_GRAYFRAME
|
||||
EXIT
|
||||
|
||||
CASE WVGSTATIC_TYPE_RAISEDBOX
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_RECESSEDBOX
|
||||
EXIT
|
||||
|
||||
CASE WVGSTATIC_TYPE_RAISEDRECT
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_RECESSEDRECT
|
||||
EXIT
|
||||
|
||||
CASE WVGSTATIC_TYPE_RAISEDLINE
|
||||
EXIT
|
||||
CASE WVGSTATIC_TYPE_RECESSEDLINE
|
||||
EXIT
|
||||
END
|
||||
END // ::type
|
||||
|
||||
::createControl()
|
||||
// Options
|
||||
IF ( ascan( { WVGSTATIC_TYPE_FGNDFRAME, WVGSTATIC_TYPE_BGNDFRAME, WVGSTATIC_TYPE_HALFTONEFRAME }, ::type ) > 0 )
|
||||
IF ( hb_bitAnd( ::options, WVGSTATIC_FRAMETHIN ) == WVGSTATIC_FRAMETHIN )
|
||||
::style += WS_BORDER
|
||||
|
||||
IF Win_IsWindow( ::hWnd )
|
||||
::oParent:addChild( SELF )
|
||||
ELSEIF ( hb_bitAnd( ::options, WVGSTATIC_FRAMETHICK ) == WVGSTATIC_FRAMETHICK )
|
||||
::style += WS_DLGFRAME
|
||||
|
||||
::setCaption( ::caption )
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self, 4 )
|
||||
//------------------- API request to create control ----------------//
|
||||
::oParent:addChild( SELF )
|
||||
|
||||
::createControl()
|
||||
|
||||
::nWndProc := hb_AsCallBack( 'CONTROLWNDPROC', Self, 4 )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
|
||||
//------------------- After creation settings------------------------//
|
||||
::setCaption( ::caption )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD handleEvent( nMessage, aInfo ) CLASS WvgStatic
|
||||
METHOD handleEvent( nMessage/*, aNM */) CLASS WvgStatic
|
||||
|
||||
hb_ToOutDebug( "WvgStatic:handleEvent %i", nMessage )
|
||||
|
||||
HB_SYMBOL_UNUSED( aInfo )
|
||||
hb_ToOutDebug( " %s:handleEvent( %i )", __ObjGetClsName( self ), nMessage )
|
||||
|
||||
SWITCH nMessage
|
||||
|
||||
@@ -230,12 +263,11 @@ hb_ToOutDebug( "WvgStatic:handleEvent %i", nMessage )
|
||||
|
||||
METHOD destroy() CLASS WvgStatic
|
||||
|
||||
hb_ToOutDebug( "WvgStatic:destroy()" )
|
||||
hb_ToOutDebug( " %s:destroy()", __objGetClsName() )
|
||||
|
||||
IF len( ::aChildren ) > 0
|
||||
aeval( ::aChildren, {|o| o:destroy() } )
|
||||
ENDIF
|
||||
|
||||
IF Win_IsWindow( ::hWnd )
|
||||
Win_DestroyWindow( ::hWnd )
|
||||
ENDIF
|
||||
@@ -255,7 +287,6 @@ METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS Wv
|
||||
|
||||
METHOD setCaption( xCaption, cDll )
|
||||
|
||||
HB_SYMBOL_UNUSED( xCaption )
|
||||
HB_SYMBOL_UNUSED( cDll )
|
||||
|
||||
DEFAULT xCaption TO ::caption
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __DBG_TB__
|
||||
# xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#ifndef __DBG_PARTS__
|
||||
#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -172,16 +172,16 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgTo
|
||||
|
||||
::createControl()
|
||||
|
||||
IF ::showToolTips
|
||||
::sendMessage( TB_SETMAXTEXTROWS, 0, 0 )
|
||||
ENDIF
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
IF ::showToolTips
|
||||
::sendMessage( TB_SETMAXTEXTROWS, 0, 0 )
|
||||
ENDIF
|
||||
|
||||
RETURN Self
|
||||
|
||||
@@ -191,6 +191,8 @@ METHOD handleEvent( nMessage, aNM ) CLASS WvgToolBar
|
||||
LOCAL nHandled := 1
|
||||
LOCAL nObj, aNMMouse
|
||||
|
||||
hb_ToOutDebug( " %s:handleEvent( %i )", __ObjGetClsName( self ), nMessage )
|
||||
|
||||
SWITCH nMessage
|
||||
|
||||
CASE WM_SIZE
|
||||
@@ -229,7 +231,7 @@ METHOD handleEvent( nMessage, aNM ) CLASS WvgToolBar
|
||||
METHOD destroy() CLASS WvgToolBar
|
||||
LOCAL i, nItems
|
||||
|
||||
hb_ToOutDebug( "WvgToolBar:destroy()" )
|
||||
hb_ToOutDebug( " %s:destroy()", __objGetClsName() )
|
||||
|
||||
IF ( nItems := Len( ::aItems ) ) > 0
|
||||
FOR i := 1 TO nItems
|
||||
|
||||
@@ -76,13 +76,13 @@
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __DBG_TB__
|
||||
# xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#ifndef __DBG_PARTS__
|
||||
#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
CLASS WvgTreeView INHERIT WvgWindow
|
||||
CLASS WvgTreeView INHERIT WvgWindow, DataRef
|
||||
|
||||
DATA alwaysShowSelection INIT .F.
|
||||
DATA hasButtons INIT .F.
|
||||
@@ -98,9 +98,7 @@ CLASS WvgTreeView INHERIT WvgWindow
|
||||
METHOD configure()
|
||||
METHOD destroy()
|
||||
|
||||
METHOD getData()
|
||||
METHOD itemFromPos( aPos )
|
||||
METHOD setData( oMarkedItem )
|
||||
|
||||
DATA sl_itemCollapsed
|
||||
DATA sl_itemExpanded
|
||||
@@ -120,14 +118,14 @@ CLASS WvgTreeView INHERIT WvgWindow
|
||||
DATA textParentSelected INIT ''
|
||||
DATA textItemSelected INIT ''
|
||||
|
||||
METHOD setColorFG( nRGB ) INLINE WIN_TreeView_SetTextColor( ::hWnd, nRGB )
|
||||
METHOD setColorBG( nRGB ) INLINE WIN_TreeView_SetBkColor( ::hWnd, nRGB )
|
||||
METHOD setColorLines( nRGB ) INLINE WIN_TreeView_SetLineColor( ::hWnd, nRGB )
|
||||
METHOD setColorFG( nRGB ) INLINE Win_TreeView_SetTextColor( ::hWnd, nRGB )
|
||||
METHOD setColorBG( nRGB ) INLINE Win_TreeView_SetBkColor( ::hWnd, nRGB )
|
||||
METHOD setColorLines( nRGB ) INLINE Win_TreeView_SetLineColor( ::hWnd, nRGB )
|
||||
|
||||
DATA nWndProc
|
||||
DATA nOldProc INIT 0
|
||||
METHOD handleEvent( nMessage, aInfo )
|
||||
|
||||
METHOD handleEvent( nEvent, aInfo )
|
||||
METHOD showExpanded( lExpanded, nLevels ) INLINE Wvg_TreeView_ShowExpanded( ::hWnd, ;
|
||||
IF( hb_isNil( lExpanded ), .f., lExpanded ), nLevels )
|
||||
|
||||
ENDCLASS
|
||||
|
||||
@@ -143,7 +141,7 @@ METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgTreeV
|
||||
::exStyle := WS_EX_STATICEDGE //+ TVS_EX_FADEINOUTEXPANDOS
|
||||
|
||||
::className := "SysTreeView32"
|
||||
::objType := objTypePushButton
|
||||
::objType := objTypeTreeView
|
||||
|
||||
RETURN Self
|
||||
|
||||
@@ -170,6 +168,9 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgTr
|
||||
|
||||
::createControl()
|
||||
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
ENDIF
|
||||
@@ -178,9 +179,6 @@ METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgTr
|
||||
::oRootItem:hTree := ::hWnd
|
||||
::oRootItem:oWnd := Self
|
||||
|
||||
::nWndProc := HB_AsCallBack( 'CONTROLWNDPROC', Self )
|
||||
::nOldProc := Win_SetWndProc( ::hWnd, ::nWndProc )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -191,7 +189,7 @@ METHOD handleEvent( nMessage, aNM ) CLASS WvgTreeView
|
||||
LOCAL cParent := space( 20 )
|
||||
LOCAL cText := space( 20 )
|
||||
|
||||
hb_ToOutDebug( "WvgTreeView:handleEvent( %i )", nMessage )
|
||||
hb_ToOutDebug( " %s:handleEvent( %i )", __ObjGetClsName( self ), nMessage )
|
||||
|
||||
SWITCH nMessage
|
||||
|
||||
@@ -246,6 +244,8 @@ hb_ToOutDebug( "WvgTreeView:handleEvent( %i )", nMessage )
|
||||
|
||||
METHOD destroy() CLASS WvgTreeView
|
||||
|
||||
hb_ToOutDebug( " %s:destroy()", __objGetClsName() )
|
||||
|
||||
IF len( ::aChildren ) > 0
|
||||
aeval( ::aChildren, {|o| o:destroy() } )
|
||||
ENDIF
|
||||
@@ -267,11 +267,6 @@ METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS Wv
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD getData() CLASS WvgTreeView
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD itemFromPos( aPos ) CLASS WvgTreeView
|
||||
|
||||
HB_SYMBOL_UNUSED( aPos )
|
||||
@@ -280,14 +275,6 @@ METHOD itemFromPos( aPos ) CLASS WvgTreeView
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD setData( oMarkedItem ) CLASS WvgTreeView
|
||||
|
||||
HB_SYMBOL_UNUSED( oMarkedItem )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD itemCollapsed( xParam ) CLASS WvgTreeView
|
||||
|
||||
IF hb_isBlock( xParam ) .or. ( xParam == NIL )
|
||||
@@ -350,16 +337,14 @@ CLASS WvgTreeViewItem
|
||||
METHOD configure()
|
||||
METHOD destroy()
|
||||
|
||||
METHOD expand( lExpand )
|
||||
METHOD expand( lExpand ) INLINE Win_TreeView_Expand( ::hTree, ::hItem, ;
|
||||
IF( hb_isLogical( lExpand ), lExpand, .t. ) )
|
||||
METHOD isExpanded()
|
||||
METHOD setCaption( cCaption )
|
||||
METHOD setExpandedImage( nResIdoBitmap )
|
||||
METHOD setImage( nResIdoBitmap )
|
||||
METHOD setMarkedImage( nResIdoBitmap )
|
||||
|
||||
METHOD getData()
|
||||
METHOD setData( xValue )
|
||||
|
||||
METHOD addItem()
|
||||
METHOD delItem()
|
||||
METHOD getChildItems()
|
||||
@@ -393,14 +378,6 @@ METHOD destroy() CLASS WvgTreeViewItem
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD expand( lExpand ) CLASS WvgTreeViewItem
|
||||
|
||||
HB_SYMBOL_UNUSED( lExpand )
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD isExpanded() CLASS WvgTreeViewItem
|
||||
|
||||
RETURN NIL
|
||||
@@ -438,20 +415,6 @@ METHOD setMarkedImage( nResIdoBitmap ) CLASS WvgTreeViewItem
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD getData() CLASS WvgTreeViewItem
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD setData( xValue ) CLASS WvgTreeViewItem
|
||||
|
||||
HB_SYMBOL_UNUSED( xValue )
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD addItem( cCaption ) CLASS WvgTreeViewItem
|
||||
Local oItem, hParent
|
||||
|
||||
@@ -464,7 +427,7 @@ METHOD addItem( cCaption ) CLASS WvgTreeViewItem
|
||||
|
||||
hParent := if( hb_isObject( oItem:oParent ), oItem:oParent:hItem, NIL )
|
||||
|
||||
oItem:hItem := Wvg_TreeView_AddItem( oItem:hTree, hParent, oItem:Caption )
|
||||
oItem:hItem := Wvg_TreeView_AddItem( oItem:hTree, hParent, oItem:caption )
|
||||
|
||||
aadd( oItem:oWnd:aItems, oItem )
|
||||
|
||||
|
||||
@@ -523,6 +523,20 @@ HB_FUNC( WIN_SETPARENT )
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_BRINGWINDOWTOTOP )
|
||||
{
|
||||
hb_retl( BringWindowToTop( wvg_parhwnd( 1 ) ) );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_SETFOREGROUNDWINDOW )
|
||||
{
|
||||
hb_retl( BringWindowToTop( wvg_parhwnd( 1 ) ) );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_SETWINDOWLONG )
|
||||
{
|
||||
hb_retnl( SetWindowLong( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parni( 2 ), hb_parnl( 3 ) ) );
|
||||
@@ -537,6 +551,13 @@ HB_FUNC( WIN_ISWINDOW )
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_ENABLEWINDOW )
|
||||
{
|
||||
hb_retl( EnableWindow( wvg_parhwnd( 1 ), hb_parl( 2 ) ) );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_DESTROYWINDOW )
|
||||
{
|
||||
hb_retl( DestroyWindow( (HWND) ( HB_PTRDIFF ) hb_parnint( 1 ) ) );
|
||||
@@ -1507,42 +1528,41 @@ HB_FUNC( WVG_TREEVIEW_GETSELECTIONINFO )
|
||||
{
|
||||
LPNMTREEVIEW pnmtv = ( LPNMTREEVIEW ) wvg_parlparam( 2 );
|
||||
HTREEITEM hSelected = pnmtv->itemNew.hItem;
|
||||
HTREEITEM hParent;
|
||||
|
||||
if( hSelected != NULL )
|
||||
{
|
||||
char *textDisp = ( char* ) hb_xgrab( MAX_PATH + 1 );
|
||||
char *ParentDisp = ( char* ) hb_xgrab( MAX_PATH + 1 );
|
||||
TV_ITEM item;
|
||||
TCHAR text[ MAX_PATH + 1 ];
|
||||
TCHAR Parent[ MAX_PATH + 1 ];
|
||||
TV_ITEM item;
|
||||
HTREEITEM hParent;
|
||||
|
||||
hb_stornl( ( long ) hSelected, 6 );
|
||||
|
||||
item.mask = TVIF_HANDLE | TVIF_TEXT | TVIF_IMAGE;
|
||||
item.hItem = hSelected;
|
||||
item.pszText = textDisp;
|
||||
item.pszText = text;
|
||||
item.cchTextMax = MAX_PATH;
|
||||
|
||||
if( SendMessage( wvg_parhwnd( 1 ), ( UINT ) TVM_GETITEM, ( WPARAM ) 0, ( LPARAM ) &item ) )
|
||||
{
|
||||
hb_storclenAdopt( textDisp, strlen( textDisp ), 4 );
|
||||
char * szText = HB_TCHAR_CONVFROM( text );
|
||||
hb_storclen( szText, strlen( szText ), 4 );
|
||||
HB_TCHAR_FREE( szText );
|
||||
}
|
||||
|
||||
hParent = TreeView_GetParent( wvg_parhwnd( 1 ), hSelected );
|
||||
hb_stornl( ( long ) hParent, 5 );
|
||||
|
||||
//hParent = SendMessage( wvg_parhwnd( 2 ), ( UINT ) TVM_GETNEXTITEM, ( WPARAM ) TVGN_PARENT, ( LPARAM ) hSelected );
|
||||
item.mask = TVIF_HANDLE | TVIF_TEXT;
|
||||
item.hItem = hParent;
|
||||
item.pszText = ParentDisp;
|
||||
item.pszText = Parent;
|
||||
item.cchTextMax = MAX_PATH;
|
||||
|
||||
if( SendMessage( wvg_parhwnd( 1 ), ( UINT ) TVM_GETITEM, ( WPARAM ) 0, ( LPARAM ) &item ) )
|
||||
{
|
||||
hb_storclenAdopt( ParentDisp, strlen( ParentDisp ), 3 );
|
||||
}
|
||||
else
|
||||
{
|
||||
hb_xfree( ParentDisp );
|
||||
char * szText = HB_TCHAR_CONVFROM( Parent );
|
||||
hb_storclen( szText, strlen( szText ), 3 );
|
||||
HB_TCHAR_FREE( szText );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1553,14 +1573,24 @@ HB_FUNC( WVG_TREEVIEW_GETSELECTIONINFO )
|
||||
//
|
||||
HB_FUNC( WVG_TREEVIEW_ADDITEM )
|
||||
{
|
||||
#ifdef UNICODE
|
||||
typedef struct tagTVINSERTSTRUCTA
|
||||
{
|
||||
HTREEITEM hParent;
|
||||
HTREEITEM hInsertAfter;
|
||||
TV_ITEMW item;
|
||||
} TVINSERTSTRUCTW, FAR *LPTVINSERTSTRUCTW;
|
||||
#else
|
||||
typedef struct tagTVINSERTSTRUCTA
|
||||
{
|
||||
HTREEITEM hParent;
|
||||
HTREEITEM hInsertAfter;
|
||||
TV_ITEMA item;
|
||||
} TVINSERTSTRUCTA, FAR *LPTVINSERTSTRUCTA;
|
||||
#endif
|
||||
|
||||
TVINSERTSTRUCT tvis;
|
||||
LPTSTR text = HB_TCHAR_CONVTO( hb_parc( 3 ) );
|
||||
|
||||
tvis.hInsertAfter = TVI_LAST;
|
||||
tvis.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE;
|
||||
@@ -1571,9 +1601,77 @@ HB_FUNC( WVG_TREEVIEW_ADDITEM )
|
||||
|
||||
tvis.item.state = NULL; // TVI_BOLD
|
||||
tvis.hParent = ISNIL( 2 ) ? NULL : wvg_parhandle( 2 );
|
||||
tvis.item.pszText = hb_parc( 3 );
|
||||
tvis.item.pszText = text;
|
||||
|
||||
hb_retnint( ( long ) SendMessage( wvg_parhwnd( 1 ), TVM_INSERTITEM, ( WPARAM ) 0, ( LPARAM ) &tvis ) );
|
||||
|
||||
HB_TCHAR_FREE( text );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_TREEVIEW_EXPAND )
|
||||
{
|
||||
hb_retl( TreeView_Expand( wvg_parhwnd( 1 ), wvg_parhandle( 2 ), ( hb_parl( 3 ) ? TVE_EXPAND : TVE_COLLAPSE ) ) );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_TVIS_EXPANDED )
|
||||
{
|
||||
//hb_retl( TreeView_GetItemState( wvg_parhwnd( 1 ), wvg_parhandle( 2 ), ( UINT ) TVIS_EXPANDED ) );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WVG_TREEVIEW_SHOWEXPANDED )
|
||||
{
|
||||
HWND hwnd = wvg_parhwnd( 1 );
|
||||
HTREEITEM hroot, hitem, hitem1, hitem2, hitem3;
|
||||
int iExpand = ( hb_parl( 2 ) ? TVE_EXPAND : TVE_COLLAPSE );
|
||||
int iLevels = hb_parni( 3 ) <= 0 ? 5 : hb_parni( 3 );
|
||||
|
||||
hroot = ( HTREEITEM ) SendMessage( hwnd, TVM_GETNEXTITEM, TVGN_ROOT, NULL );
|
||||
if( hroot )
|
||||
{
|
||||
TreeView_Expand( hwnd, hroot, iExpand );
|
||||
if( iLevels >= 2 )
|
||||
{
|
||||
hitem = TreeView_GetNextItem( hwnd, hroot, TVGN_CHILD );
|
||||
while( hitem )
|
||||
{
|
||||
TreeView_Expand( hwnd, hitem, iExpand );
|
||||
if( iLevels >= 3 )
|
||||
{
|
||||
hitem1 = TreeView_GetNextItem( hwnd, hitem, TVGN_CHILD );
|
||||
while( hitem1 )
|
||||
{
|
||||
TreeView_Expand( hwnd, hitem1, iExpand );
|
||||
if( iLevels >= 4 )
|
||||
{
|
||||
hitem2 = TreeView_GetNextItem( hwnd, hitem1, TVGN_CHILD );
|
||||
while( hitem2 )
|
||||
{
|
||||
TreeView_Expand( hwnd, hitem2, iExpand );
|
||||
if( iLevels >= 5 )
|
||||
{
|
||||
hitem3 = TreeView_GetNextItem( hwnd, hitem2, TVGN_CHILD );
|
||||
while( hitem3 )
|
||||
{
|
||||
TreeView_Expand( hwnd, hitem3, iExpand );
|
||||
hitem3 = TreeView_GetNextItem( hwnd, hitem3, TVGN_NEXT );
|
||||
}
|
||||
}
|
||||
hitem2 = TreeView_GetNextItem( hwnd, hitem2, TVGN_NEXT );
|
||||
}
|
||||
}
|
||||
hitem1 = TreeView_GetNextItem( hwnd, hitem1, TVGN_NEXT );
|
||||
}
|
||||
}
|
||||
hitem = TreeView_GetNextItem( hwnd, hitem, TVGN_NEXT );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -1582,20 +1680,33 @@ HB_FUNC( WVG_TREEVIEW_ADDITEM )
|
||||
|
||||
HB_FUNC( WIN_LBGETTEXT )
|
||||
{
|
||||
USHORT iLen = ( USHORT ) SendMessage( wvg_parhwnd( 1 ), LB_GETTEXTLEN, 0, 0 ) + 1 ;
|
||||
LPTSTR cText = ( LPTSTR ) hb_xgrab( iLen * sizeof( TCHAR ) );
|
||||
TCHAR text[ MAX_PATH + 1 ];
|
||||
char * szText;
|
||||
UINT iResult;
|
||||
|
||||
iResult = SendMessage( wvg_parhwnd( 1 ), LB_GETTEXT, ( WPARAM ) hb_parni( 2 ), ( LPARAM ) cText );
|
||||
SendMessage( wvg_parhwnd( 1 ), LB_GETTEXT, ( WPARAM ) hb_parni( 2 ), ( LPARAM ) text );
|
||||
|
||||
cText[ iResult ] = '\0';
|
||||
szText = HB_TCHAR_CONVFROM( cText );
|
||||
szText = HB_TCHAR_CONVFROM( text );
|
||||
hb_retc( szText );
|
||||
HB_TCHAR_FREE( szText );
|
||||
hb_xfree( cText );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_LBGETCURSEL )
|
||||
{
|
||||
hb_retni( ListBox_GetCurSel( wvg_parhwnd( 1 ) ) );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
// Buttons
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
HB_FUNC( WIN_BUTTON_GETCHECK )
|
||||
{
|
||||
hb_retnl( Button_GetCheck( wvg_parhwnd( 1 ) ) );
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -76,6 +76,12 @@
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#ifndef __DBG_PARTS__
|
||||
//#xtranslate hb_ToOutDebug( [<x,...>] ) =>
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
CLASS WvgWindow INHERIT WvgPartHandler
|
||||
|
||||
// CONFIGURATION
|
||||
@@ -95,6 +101,11 @@ CLASS WvgWindow INHERIT WvgPartHandler
|
||||
DATA helpLink
|
||||
DATA tooltipText INIT ''
|
||||
|
||||
DATA clr_FG
|
||||
DATA clr_BG
|
||||
DATA fnt_COMMPOUNDNAME
|
||||
DATA fnt_hFont
|
||||
|
||||
// CALLBACK SLOTS
|
||||
DATA sl_enter
|
||||
DATA sl_leave
|
||||
@@ -158,8 +169,8 @@ EXPORTED:
|
||||
METHOD winDevice()
|
||||
|
||||
// SETTINGS
|
||||
METHOD setColorBG()
|
||||
METHOD setColorFG()
|
||||
METHOD setColorBG( nRGB ) INLINE ::clr_BG := nRGB
|
||||
METHOD setColorFG( nRGB ) INLINE ::clr_FG := nRGB, ::invalidateRect()
|
||||
METHOD setFont()
|
||||
METHOD setFontCompoundName()
|
||||
METHOD setPresParam()
|
||||
@@ -170,8 +181,11 @@ EXPORTED:
|
||||
METHOD getHWND()
|
||||
METHOD getModalState()
|
||||
METHOD hasInputFocus()
|
||||
METHOD isEnabled()
|
||||
METHOD isVisible()
|
||||
|
||||
DATA is_hidden INIT .F.
|
||||
DATA is_enabled INIT .T.
|
||||
METHOD isEnabled() INLINE ::is_enabled
|
||||
METHOD isVisible() INLINE !( ::is_hidden )
|
||||
|
||||
// CALLBACKS
|
||||
//
|
||||
@@ -212,46 +226,47 @@ EXPORTED:
|
||||
METHOD killDisplayFocus() SETGET
|
||||
|
||||
|
||||
DATA title INIT ' '
|
||||
DATA icon INIT 0
|
||||
DATA closable INIT .T.
|
||||
DATA resizable INIT .t.
|
||||
DATA resizeMode INIT 0
|
||||
DATA style INIT WS_OVERLAPPEDWINDOW
|
||||
DATA exStyle INIT 0
|
||||
DATA lModal INIT .f.
|
||||
DATA title INIT ' '
|
||||
DATA icon INIT 0
|
||||
DATA closable INIT .T.
|
||||
DATA resizable INIT .t.
|
||||
DATA resizeMode INIT 0
|
||||
DATA style INIT WS_OVERLAPPEDWINDOW
|
||||
DATA exStyle INIT 0
|
||||
DATA lModal INIT .f.
|
||||
DATA pGTp
|
||||
DATA pGT
|
||||
DATA objType INIT objTypeNone
|
||||
DATA className INIT ''
|
||||
DATA objType INIT objTypeNone
|
||||
DATA className INIT ''
|
||||
|
||||
METHOD setFocus()
|
||||
METHOD sendMessage()
|
||||
|
||||
DATA hWnd
|
||||
DATA aPos INIT { 0,0 }
|
||||
DATA aSize INIT { 0,0 }
|
||||
DATA aPresParams INIT {}
|
||||
DATA lHasInputFocus INIT .F.
|
||||
DATA nFrameState INIT 0 // normal
|
||||
DATA aPos INIT { 0,0 }
|
||||
DATA aSize INIT { 0,0 }
|
||||
DATA aPresParams INIT {}
|
||||
DATA lHasInputFocus INIT .F.
|
||||
DATA nFrameState INIT 0 // normal
|
||||
|
||||
DATA maxCol INIT 79
|
||||
DATA maxRow INIT 24
|
||||
DATA mouseMode INIT 1
|
||||
DATA maxCol INIT 79
|
||||
DATA maxRow INIT 24
|
||||
DATA mouseMode INIT 1
|
||||
|
||||
DATA nID INIT 0
|
||||
DATA nControlID INIT 5000
|
||||
DATA nID INIT 0
|
||||
DATA nControlID INIT 5000
|
||||
METHOD createControl()
|
||||
METHOD getControlID() INLINE ++::nControlID
|
||||
|
||||
METHOD Initialize()
|
||||
|
||||
DATA nOldProc INIT 0
|
||||
DATA nOldProc INIT 0
|
||||
DATA nWndProc
|
||||
|
||||
DATA oMenu
|
||||
METHOD HandleEvent() INLINE ( 1 )
|
||||
METHOD ControlWndProc()
|
||||
METHOD findObjectByHandle( hWnd )
|
||||
|
||||
ENDCLASS
|
||||
|
||||
@@ -338,13 +353,23 @@ METHOD captureMouse() CLASS WvgWindow
|
||||
|
||||
METHOD disable() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
IF Win_EnableWindow( ::hWnd, .f. )
|
||||
::is_enabled := .f.
|
||||
RETURN .t.
|
||||
ENDIF
|
||||
|
||||
RETURN .f.
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD enable() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
IF Win_EnableWindow( ::hWnd, .t. )
|
||||
::is_enabled := .t.
|
||||
RETURN .t.
|
||||
ENDIF
|
||||
|
||||
RETURN .f.
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -352,6 +377,7 @@ METHOD hide() CLASS WvgWindow
|
||||
|
||||
IF Win_IsWindow( ::hWnd )
|
||||
Win_ShowWindow( ::hWnd, SW_HIDE )
|
||||
::is_hidden := .t.
|
||||
ENDIF
|
||||
|
||||
RETURN Self
|
||||
@@ -459,6 +485,7 @@ METHOD setSize( aSize, lPaint ) CLASS WvgWindow
|
||||
METHOD show() CLASS WvgWindow
|
||||
|
||||
Win_ShowWindow( ::hWnd, SW_NORMAL )
|
||||
::is_hidden := .f.
|
||||
::lHasInputFocus := .t.
|
||||
|
||||
RETURN Self
|
||||
@@ -473,7 +500,7 @@ METHOD toBack() CLASS WvgWindow
|
||||
|
||||
METHOD toFront() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
RETURN Win_SetForegroundWindow( ::hWnd )
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -489,18 +516,6 @@ METHOD winDevice() CLASS WvgWindow
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD setColorBG() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD setColorFG() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD setFont() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
@@ -553,18 +568,6 @@ METHOD hasInputFocus() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD isEnabled() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD isVisible() CLASS WvgWindow
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
// Callback Methods
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -1093,13 +1096,30 @@ METHOD setFocus() CLASS WvgWindow
|
||||
::sendMessage( WM_ACTIVATE, 1, 0 )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD sendMessage( nMessage, nlParam, nwParam ) CLASS WvgWindow
|
||||
|
||||
Win_SendMessage( ::hWnd, nMessage, nlParam, nwParam )
|
||||
|
||||
RETURN Self
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD findObjectByHandle( hWnd ) CLASS WvgWindow
|
||||
LOCAL nObj
|
||||
|
||||
IF len( ::aChildren ) > 0
|
||||
IF ( nObj := ascan( ::aChildren, {|o| o:hWnd == hWnd } ) ) > 0
|
||||
RETURN ::aChildren[ nObj ]
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD createControl() CLASS WvgWindow
|
||||
LOCAL hWnd
|
||||
|
||||
@@ -1143,9 +1163,11 @@ METHOD createControl() CLASS WvgWindow
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
METHOD ControlWndProc( hWnd, nMessage, nwParam, nlParam ) CLASS WvgWindow
|
||||
LOCAL nCtrlID, nNotifctn, hWndCtrl, nObj, aMenuItem
|
||||
LOCAL nCtrlID, nNotifctn, hWndCtrl, nObj, aMenuItem, oObj
|
||||
|
||||
hb_ToOutDebug( "Control:wndProc:%s( %i %i %i %i )", __ObjGetClsName( self ), hWnd, nMessage, nwParam, nlParam )
|
||||
#if 0
|
||||
hb_ToOutDebug( "%s:wndProc( %i %i %i %i )", __ObjGetClsName( self ), hWnd, nMessage, nwParam, nlParam )
|
||||
#endif
|
||||
|
||||
SWITCH nMessage
|
||||
|
||||
@@ -1169,7 +1191,6 @@ hb_ToOutDebug( "Control:wndProc:%s( %i %i %i %i )", __ObjGetClsName
|
||||
RETURN 0
|
||||
ELSE
|
||||
IF ( nObj := ascan( ::aChildren, {|o| o:nID == nCtrlID } ) ) > 0
|
||||
hb_ToOutDebug( "Control:wndProc:%s( %i )", __ObjGetClsName( self ), nCtrlID )
|
||||
RETURN ::aChildren[ nObj ]:handleEvent( WM_COMMAND, { nNotifctn, nCtrlID, hWndCtrl } )
|
||||
|
||||
ENDIF
|
||||
@@ -1184,9 +1205,15 @@ hb_ToOutDebug( "Control:wndProc:%s( %i )", __ObjGetClsName( self ), nCtrlID )
|
||||
EXIT
|
||||
|
||||
CASE WM_CTLCOLORLISTBOX
|
||||
Win_SetTextColor( nwParam, RGB( 100,55,255 ) )
|
||||
RETURN ( Win_GetStockObject( WHITE_BRUSH ) )
|
||||
oObj := ::findObjectByHandle( nlParam )
|
||||
IF hb_isObject( oObj )
|
||||
IF oObj:clr_FG <> NIL
|
||||
Win_SetTextColor( nwParam, oObj:clr_FG )
|
||||
RETURN ( Win_GetStockObject( WHITE_BRUSH ) )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
EXIT
|
||||
END
|
||||
|
||||
RETURN Win_CallWindowProc( ::nOldProc, hWnd, nMessage, nwParam, nlParam )
|
||||
|
||||
Reference in New Issue
Block a user