Files
harbour-core/harbour/contrib/gtwvg/scrollbr.prg
Viktor Szakats c300ba14ee 2012-07-23 17:26 UTC+0200 Viktor Szakats (harbour syenar.net)
+ contrib/gtwvg/3state.prg
  + contrib/gtwvg/activex.prg
  + contrib/gtwvg/bitmap.prg
  + contrib/gtwvg/checkbox.prg
  + contrib/gtwvg/class.prg
  + contrib/gtwvg/combobox.prg
  + contrib/gtwvg/crt.prg
  + contrib/gtwvg/dataref.prg
  + contrib/gtwvg/dialog.prg
  + contrib/gtwvg/drawarea.prg
  + contrib/gtwvg/genrc.prg
  + contrib/gtwvg/htmlview.prg
  + contrib/gtwvg/listbox.prg
  + contrib/gtwvg/menubar.prg
  + contrib/gtwvg/mle.prg
  + contrib/gtwvg/paint.prg
  + contrib/gtwvg/parthdlr.prg
  + contrib/gtwvg/pushbut.prg
  + contrib/gtwvg/radiobut.prg
  + contrib/gtwvg/scrollbr.prg
  + contrib/gtwvg/sle.prg
  + contrib/gtwvg/statbar.prg
  + contrib/gtwvg/static.prg
  + contrib/gtwvg/syswnd.prg
  + contrib/gtwvg/tabpage.prg
  + contrib/gtwvg/toolbar.prg
  + contrib/gtwvg/treeview.prg
  + contrib/gtwvg/wnd.prg
  + contrib/hbxbp/3state.prg
  + contrib/hbxbp/appevent.prg
  + contrib/hbxbp/bitmap.prg
  + contrib/hbxbp/browse.prg
  + contrib/hbxbp/checkbox.prg
  + contrib/hbxbp/clipboard.prg
  + contrib/hbxbp/combobox.prg
  + contrib/hbxbp/crt.prg
  + contrib/hbxbp/dataref.prg
  + contrib/hbxbp/dialog.prg
  + contrib/hbxbp/filedialog.prg
  + contrib/hbxbp/fontdialog.prg
  + contrib/hbxbp/generic.prg
  + contrib/hbxbp/gra.prg
  + contrib/hbxbp/htmlviewer.prg
  + contrib/hbxbp/listbox.prg
  + contrib/hbxbp/menubar.prg
  + contrib/hbxbp/mle.prg
  + contrib/hbxbp/parthandler.prg
  + contrib/hbxbp/presspace.prg
  + contrib/hbxbp/printdialog.prg
  + contrib/hbxbp/printer.prg
  + contrib/hbxbp/pushbutton.prg
  + contrib/hbxbp/radiobutton.prg
  + contrib/hbxbp/rtf.prg
  + contrib/hbxbp/scrollbar.prg
  + contrib/hbxbp/sle.prg
  + contrib/hbxbp/spinbutton.prg
  + contrib/hbxbp/static.prg
  + contrib/hbxbp/statusbar.prg
  + contrib/hbxbp/style.prg
  + contrib/hbxbp/tabpage.prg
  + contrib/hbxbp/toolbar.prg
  + contrib/hbxbp/treeview.prg
  + contrib/hbxbp/window.prg
  - contrib/gtwvg/wvg3stat.prg
  - contrib/gtwvg/wvgax.prg
  - contrib/gtwvg/wvgbitmp.prg
  - contrib/gtwvg/wvgcheck.prg
  - contrib/gtwvg/wvgclass.prg
  - contrib/gtwvg/wvgcombo.prg
  - contrib/gtwvg/wvgcrt.prg
  - contrib/gtwvg/wvgdarea.prg
  - contrib/gtwvg/wvgdatar.prg
  - contrib/gtwvg/wvgdlg.prg
  - contrib/gtwvg/wvggenrc.prg
  - contrib/gtwvg/wvghtmlv.prg
  - contrib/gtwvg/wvglistb.prg
  - contrib/gtwvg/wvgmenub.prg
  - contrib/gtwvg/wvgmle.prg
  - contrib/gtwvg/wvgpaint.prg
  - contrib/gtwvg/wvgphdlr.prg
  - contrib/gtwvg/wvgpushb.prg
  - contrib/gtwvg/wvgradio.prg
  - contrib/gtwvg/wvgscrlb.prg
  - contrib/gtwvg/wvgsle.prg
  - contrib/gtwvg/wvgstatb.prg
  - contrib/gtwvg/wvgstatc.prg
  - contrib/gtwvg/wvgsysw.prg
  - contrib/gtwvg/wvgtabpg.prg
  - contrib/gtwvg/wvgtoolb.prg
  - contrib/gtwvg/wvgtreev.prg
  - contrib/gtwvg/wvgwnd.prg
  - contrib/hbxbp/xbp3state.prg
  - contrib/hbxbp/xbpappevent.prg
  - contrib/hbxbp/xbpbitmap.prg
  - contrib/hbxbp/xbpbrowse.prg
  - contrib/hbxbp/xbpcheckbox.prg
  - contrib/hbxbp/xbpclipboard.prg
  - contrib/hbxbp/xbpcombobox.prg
  - contrib/hbxbp/xbpcrt.prg
  - contrib/hbxbp/xbpdataref.prg
  - contrib/hbxbp/xbpdialog.prg
  - contrib/hbxbp/xbpfiledialog.prg
  - contrib/hbxbp/xbpfontdialog.prg
  - contrib/hbxbp/xbpgeneric.prg
  - contrib/hbxbp/xbpgra.prg
  - contrib/hbxbp/xbphtmlviewer.prg
  - contrib/hbxbp/xbplistbox.prg
  - contrib/hbxbp/xbpmenubar.prg
  - contrib/hbxbp/xbpmle.prg
  - contrib/hbxbp/xbpparthandler.prg
  - contrib/hbxbp/xbppresspace.prg
  - contrib/hbxbp/xbpprintdialog.prg
  - contrib/hbxbp/xbpprinter.prg
  - contrib/hbxbp/xbppushbutton.prg
  - contrib/hbxbp/xbpradiobutton.prg
  - contrib/hbxbp/xbprtf.prg
  - contrib/hbxbp/xbpscrollbar.prg
  - contrib/hbxbp/xbpsle.prg
  - contrib/hbxbp/xbpspinbutton.prg
  - contrib/hbxbp/xbpstatic.prg
  - contrib/hbxbp/xbpstatusbar.prg
  - contrib/hbxbp/xbpstyle.prg
  - contrib/hbxbp/xbptabpage.prg
  - contrib/hbxbp/xbptoolbar.prg
  - contrib/hbxbp/xbptreeview.prg
  - contrib/hbxbp/xbpwindow.prg
  * contrib/gtwvg/gtwvg.hbp
  * contrib/hbxbp/hbxbp.hbp
    % deleted unnecessary prefix from .prg filenames, 
      thus making the much more easily searchable and 
      recognizable and also allowing more room for 
      the real description with much less undecipherable 
      abbreviations.
2012-07-23 15:32:39 +00:00

672 lines
22 KiB
Plaintext

/*
* $Id$
*/
/*
* Harbour Project source code:
* Source file for the Wvg*Classes
*
* Copyright 2008 Pritpal Bedi <pritpal@vouchcac.com>
* http://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++ xbpScrollBar Compatible Class
*
* Pritpal Bedi <pritpal@vouchcac.com>
* 17Feb2009
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
#include "hbclass.ch"
#include "common.ch"
#include "inkey.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvtwin.ch"
#include "wvgparts.ch"
/*----------------------------------------------------------------------*/
#if 0
#include "xhb.ch"
#include "cstruct.ch"
#include "wintypes.ch"
typedef struct tagSCROLLBARINFO {;
DWORD cbSize;
RECT rcScrollBar;
int dxyLineButton;
int xyThumbTop;
int xyThumbBottom;
int reserved;
DWORD x; /* rgstate[CCHILDREN_SCROLLBAR+1]; */
} SCROLLBARINFO
typedef struct tagSCROLLINFO {;
UINT cbSize;
UINT fMask;
int nMin;
int nMax;
UINT nPage;
int nPos;
int nTrackPos;
} SCROLLINFO
typedef struct tagPOINT {;
LONG x;
LONG y;
} POINT
typedef struct tagRECT { ;
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT
#endif
/*----------------------------------------------------------------------*/
CLASS WvgScrollBar INHERIT WvgWindow, WvgDataRef
DATA autoTrack INIT .t.
DATA range INIT {0,1}
DATA scrollBoxSize INIT -1
DATA type INIT WVGSCROLL_HORIZONTAL
DATA excludeScrollBox INIT .f.
DATA sl_xbeSB_Scroll
DATA lTracking INIT .f.
METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) VIRTUAL
METHOD destroy()
METHOD handleEvent( nMessage, aNM )
METHOD scroll( xParam ) SETGET
METHOD setRange( aRange )
METHOD setScrollBoxSize( nUnits )
ENDCLASS
/*----------------------------------------------------------------------*/
METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgScrollBar
::WvgWindow:new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::style := WS_CHILD /* + SBS_SIZEBOX + SBS_SIZEGRIP */
::className := "SCROLLBAR"
::objType := objTypeScrollBar
RETURN Self
/*----------------------------------------------------------------------*/
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgScrollBar
::wvgWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
IF ::type == WVGSCROLL_VERTICAL
::style += SBS_VERT
ELSE
::style += SBS_HORZ
ENDIF
::oParent:AddChild( SELF )
::createControl()
IF ::isParentCrt()
::SetWindowProcCallback()
ENDIF
::setRange( ::range )
IF ::visible
::show()
ENDIF
::setPosAndSize()
#if 0
si IS SCROLLINFO
si:cbSize := si:sizeof
cSI := si:value
IF WAPI_GetScrollInfo( ::pWnd, SB_CTL, @cSI )
si:buffer( cSI )
ENDIF
#endif
RETURN Self
/*----------------------------------------------------------------------*/
METHOD handleEvent( nMessage, aNM ) CLASS WvgScrollBar
LOCAL nScrMsg, nScrPos, nCommand
DO CASE
CASE nMessage == HB_GTE_RESIZED
IF ::isParentCrt()
::rePosition()
ENDIF
::sendMessage( WM_SIZE, 0, 0 )
CASE nMessage == HB_GTE_CTLCOLOR
IF HB_ISNUMERIC( ::hBrushBG )
WVG_SetBkMode( aNM[ 1 ], 1 )
RETURN ::hBrushBG
ENDIF
CASE nMessage == HB_GTE_HSCROLL
IF ::isParentCrt()
::oParent:setFocus()
ENDIF
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( ::pWnd, SB_CTL )
ENDIF
DO CASE
CASE nScrMsg == SB_LEFT
nCommand := WVGSB_PREVPOS
IF nScrPos > ::range[ 1 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, --nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_RIGHT
nCommand := WVGSB_NEXTPOS
IF nScrPos < ::range[ 2 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, ++nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_LINELEFT
nCommand := WVGSB_PREVPAGE
IF nScrPos > ::range[ 1 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, --nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_LINERIGHT
nCommand := WVGSB_NEXTPAGE
IF nScrPos < ::range[ 2 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, ++nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_PAGELEFT
nCommand := WVGSB_PREVPAGE
IF nScrPos > ::range[ 1 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, --nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_PAGERIGHT
nCommand := WVGSB_NEXTPAGE
IF nScrPos < ::range[ 2 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, ++nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_THUMBPOSITION
nCommand := WVGSB_SLIDERTRACK
WAPI_SetScrollPos( ::pWnd, SB_CTL, nScrPos, .t. )
CASE nScrMsg == SB_THUMBTRACK
nCommand := WVGSB_ENDTRACK
WAPI_SetScrollPos( ::pWnd, SB_CTL, nScrPos, .t. )
CASE nScrMsg == SB_ENDSCROLL
nCommand := WVGSB_ENDSCROLL
WAPI_SetScrollPos( ::pWnd, SB_CTL, nScrPos, .t. )
ENDCASE
::sl_editBuffer := nScrPos
eval( ::sl_xbeSB_Scroll, { nScrPos, nCommand }, NIL, Self )
RETURN EVENT_HANDELLED
CASE nMessage == HB_GTE_VSCROLL
IF ::isParentCrt()
::oParent:setFocus()
ENDIF
nScrMsg := aNM[ 1 ]
IF nScrMsg == SB_THUMBPOSITION .or. nScrMsg == SB_THUMBTRACK
nScrPos := aNM[ 2 ]
ELSE
nScrPos := WAPI_GetScrollPos( ::pWnd, 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( ::pWnd, SB_CTL, --nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_BOTTOM
nCommand := WVGSB_BOTTOM
IF nScrPos < ::range[ 2 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, ++nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_LINEUP
nCommand := WVGSB_PREVPOS
IF nScrPos > ::range[ 1 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, --nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_LINEDOWN
nCommand := WVGSB_NEXTPOS
IF nScrPos < ::range[ 2 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, ++nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_PAGEUP
nCommand := WVGSB_PREVPAGE
IF nScrPos > ::range[ 1 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, --nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_PAGEDOWN
nCommand := WVGSB_NEXTPAGE
IF nScrPos < ::range[ 2 ]
WAPI_SetScrollPos( ::pWnd, SB_CTL, ++nScrPos, .t. )
ENDIF
CASE nScrMsg == SB_THUMBPOSITION
nCommand := WVGSB_SLIDERTRACK
WAPI_SetScrollPos( ::pWnd, SB_CTL, nScrPos, .t. )
CASE nScrMsg == SB_THUMBTRACK
nCommand := WVGSB_ENDTRACK
WAPI_SetScrollPos( ::pWnd, SB_CTL, nScrPos, .t. )
CASE nScrMsg == SB_ENDSCROLL
nCommand := WVGSB_ENDSCROLL
WAPI_SetScrollPos( ::pWnd, SB_CTL, nScrPos, .t. )
ENDCASE
::sl_editBuffer := nScrPos
eval( ::sl_xbeSB_Scroll, { nScrPos, nCommand }, NIL, self )
RETURN EVENT_HANDELLED
ENDCASE
RETURN EVENT_UNHANDELLED
/*----------------------------------------------------------------------*/
METHOD destroy() CLASS WvgScrollBar
hb_traceLog( " %s:destroy()", __objGetClsName( self ) )
::wvgWindow:destroy()
RETURN NIL
/*----------------------------------------------------------------------*/
METHOD scroll( xParam ) CLASS WvgScrollBar
IF HB_ISBLOCK( xParam )
::sl_xbeSB_Scroll := xParam
ENDIF
RETURN self
/*----------------------------------------------------------------------*/
METHOD setRange( aRange ) CLASS WvgScrollBar
LOCAL aOldRange, nMin, nMax
IF WAPI_GetScrollRange( ::pWnd, SB_CTL, @nMin, @nMax )
aOldRange := { nMin, nMax }
ELSE
aOldRange := ::range
ENDIF
IF WAPI_SetScrollRange( ::pWnd, SB_CTL, aRange[ 1 ], aRange[ 2 ], .t. )
::range := aRange
ENDIF
RETURN aOldRange
/*----------------------------------------------------------------------*/
METHOD setScrollBoxSize( nUnits ) CLASS WvgScrollBar
LOCAL nOldUnits := nUnits
RETURN nOldUnits
/*----------------------------------------------------------------------*/
#if 0
Scroll Bar
This section contains information about the programming elements used with scroll bars.
A window can display a data object, such as a document or a bitmap, that is larger than
the windows client area. When provided with a scroll bar, the user can scroll a data
object in the client area to bring into view the portions of the object that extend beyond
the borders of the window.
Overviews
About Scroll Bars
A scroll bar consists of a shaded shaft with an arrow button at each end and a scroll
box (sometimes called a thumb) between the arrow buttons.
Using Scroll Bars
When creating an overlapped, pop-up, or child window, you can add standard scroll bars
by using the CreateWindowEx function and specifying WS_HSCROLL, WS_VSCROLL, or both styles.
Functions
EnableScrollBar
The EnableScrollBar function enables or disables one or both scroll bar arrows.
GetScrollBarInfo
The GetScrollBarInfo function retrieves information about the specified scroll bar.
GetScrollInfo
The GetScrollInfo function retrieves the parameters of a scroll bar, including
the minimum and maximum scrolling positions, the page size, and the position of the
scroll box (thumb).
GetScrollPos
The GetScrollPos function retrieves the current position of the scroll box (thumb)
in the specified scroll bar. The current position is a relative value that depends on
the current scrolling range. For example, if the scrolling range is 0 through 100 and the
scroll box is in the middle of the bar, the current position is 50.
Note The GetScrollPos function is provided for backward compatibility. New applications
should use the GetScrollInfo function.
GetScrollRange
The GetScrollRange function retrieves the current minimum and maximum scroll box
(thumb) positions for the specified scroll bar.
Note The GetScrollRange function is provided for compatibility only. New applications
should use the GetScrollInfo function.
ScrollDC
The ScrollDC function scrolls a rectangle of bits horizontally and vertically.
ScrollWindow
The ScrollWindow function scrolls the contents of the specified windows client area.
Note The ScrollWindow function is provided for backward compatibility.
New applications should use the ScrollWindowEx function.
ScrollWindowEx
The ScrollWindowEx function scrolls the contents of the specified windows client area.
SetScrollInfo
The SetScrollInfo function sets the parameters of a scroll bar, including the
minimum and maximum scrolling positions, the page size, and the position of the
scroll box (thumb). The function also redraws the scroll bar, if requested.
SetScrollPos
The SetScrollPos function sets the position of the scroll box (thumb) in the specified
scroll bar and, if requested, redraws the scroll bar to reflect the new position of
the scroll box.
Note The SetScrollPos function is provided for backward compatibility.
New applications should use the SetScrollInfo function.
SetScrollRange
The SetScrollRange function sets the minimum and maximum scroll box positions for
the specified scroll bar.
Note The SetScrollRange function is provided for backward compatibility.
New applications should use the SetScrollInfo function.
ShowScrollBar
The ShowScrollBar function shows or hides the specified scroll bar.
Messages
========
SBM_ENABLE_ARROWS
An application sends the SBM_ENABLE_ARROWS message to enable or disable one or
both arrows of a scroll bar control.
SBM_GETPOS
The SBM_GETPOS message is sent to retrieve the current position of the scroll box
of a scroll bar control. The current position is a relative value that depends on the
current scrolling range. For example, if the scrolling range is 0 through 100 and the
scroll box is in the middle of the bar, the current position is 50.
Applications should not send this message directly. Instead, they should use the
GetScrollPos function. A window receives this message through its WindowProc function.
Applications which implement a custom scroll bar control must respond to these messages
for the GetScrollPos function to function properly.
SBM_GETRANGE
The SBM_GETRANGE message is sent to retrieve the minimum and maximum position values
for the scroll bar control.
Applications should not send this message directly. Instead, they should use the
GetScrollRange function. A window receives this message through its WindowProc function.
Applications which implement a custom scroll bar control must respond to these
messages for the GetScrollRange function to work properly.
SBM_GETSCROLLBARINFO
Sent by an application to retrieve information about the specified scroll bar.
SBM_GETSCROLLINFO
The SBM_GETSCROLLINFO message is sent to retrieve the parameters of a scroll bar.
Applications should not send this message directly. Instead, they should use
the GetScrollInfo function. A window receives this message through its WindowProc function.
Applications which implement a custom scroll bar control must respond to these
messages for the GetScrollInfo function to work properly.
SBM_SETPOS
The SBM_SETPOS message is sent to set the position of the scroll box (thumb) and,
if requested, redraw the scroll bar to reflect the new position of the scroll box.
Applications should not send this message directly. Instead, they should use the
SetScrollPos function. A window receives this message through its WindowProc function.
Applications which implement a custom scroll bar control must respond to
these messages for the SetScrollPos function to work properly.
SBM_SETRANGE
The SBM_SETRANGE message is sent to set the minimum and maximum position values
for the scroll bar control.
Applications should not send this message directly. Instead, they should use the
SetScrollRange function. A window receives this message through its WindowProc function.
Applications which implement a custom scroll bar control must respond to these
messages for the SetScrollRange function to work properly.
SBM_SETRANGEREDRAW
An application sends the SBM_SETRANGEREDRAW message to a scroll bar control to
set the minimum and maximum position values and to redraw the control.
SBM_SETSCROLLINFO
The SBM_SETSCROLLINFO message is sent to set the parameters of a scroll bar.
Applications should not send this message directly. Instead, they should use
the SetScrollInfo function. A window receives this message through its WindowProc function.
Applications which implement a custom scroll bar control must respond to
these messages for the SetScrollInfo function to function properly.
Notifications
WM_CTLCOLORSCROLLBAR
The WM_CTLCOLORSCROLLBAR message is sent to the parent window of a
scroll bar control when the control is about to be drawn. By responding to this
message, the parent window can use the display context handle to set the background
color of the scroll bar control.
A window receives this message through its WindowProc function.
WM_HSCROLL
The WM_HSCROLL message is sent to a window when a scroll event occurs in the
windows standard horizontal scroll bar. This message is also sent to the owner
of a horizontal scroll bar control when a scroll event occurs in the control.
A window receives this message through its WindowProc function.
WM_VSCROLL
The WM_VSCROLL message is sent to a window when a scroll event occurs in the windows
standard vertical scroll bar. This message is also sent to the owner of a vertical
scroll bar control when a scroll event occurs in the control.
A window receives this message through its WindowProc function.
Structures
==========
SCROLLBARINFO
The SCROLLBARINFO structure contains scroll bar information.
SCROLLINFO
The SCROLLINFO structure contains scroll bar parameters to be set by the SetScrollInfo function (or SBM_SETSCROLLINFO message), or retrieved by the GetScrollInfo function (or SBM_GETSCROLLINFO message).
Constants
=========
Scroll Bar Control Styles
To create a scroll bar control using the CreateWindow or CreateWindowEx
function specify the SCROLLBAR class, appropriate window style constants,
and a combination of the following scroll bar control styles. Some of the styles
create a scroll bar control that uses a default width or height. However,
you must always specify the x- and y-coordinates and the other dimensions of the
scroll bar when you call CreateWindow or CreateWindowEx.
SBS_BOTTOMALIGN
Aligns the bottom edge of the scroll bar with the bottom edge of the rectangle
defined by the x, y, nWidth, and nHeight parameters of CreateWindowEx function.
The scroll bar has the default height for system scroll bars. Use this style with
the SBS_HORZ style.
SBS_HORZ
Designates a horizontal scroll bar. If neither the SBS_BOTTOMALIGN nor SBS_TOPALIGN
style is specified, the scroll bar has the height, width, and position specified by the
x, y, nWidth, and nHeight parameters of CreateWindowEx.
SBS_LEFTALIGN
Aligns the left edge of the scroll bar with the left edge of the rectangle defined
by the x, y, nWidth, and nHeight parameters of CreateWindowEx. The scroll bar has
the default width for system scroll bars. Use this style with the SBS_VERT style.
SBS_RIGHTALIGN
Aligns the right edge of the scroll bar with the right edge of the rectangle defined
by the x, y, nWidth, and nHeight parameters of CreateWindowEx. The scroll bar has the
default width for system scroll bars. Use this style with the SBS_VERT style.
SBS_SIZEBOX
Designates a size box. If you specify neither the SBS_SIZEBOXBOTTOMRIGHTALIGN nor the
SBS_SIZEBOXTOPLEFTALIGN style, the size box has the height, width, and position
specified by the x, y, nWidth, and nHeight parameters of CreateWindowEx.
SBS_SIZEBOXBOTTOMRIGHTALIGN
Aligns the lower right corner of the size box with the lower right corner of the
rectangle specified by the x, y, nWidth, and nHeight parameters of CreateWindowEx.
The size box has the default size for system size boxes. Use this style with the
SBS_SIZEBOX style.
SBS_SIZEBOXTOPLEFTALIGN
Aligns the upper left corner of the size box with the upper left corner of the
rectangle specified by the x, y, nWidth, and nHeight parameters of CreateWindowEx.
The size box has the default size for system size boxes. Use this style with the
SBS_SIZEBOX style.
SBS_SIZEGRIP
Same as SBS_SIZEBOX, but with a raised edge.
SBS_TOPALIGN
Aligns the top edge of the scroll bar with the top edge of the rectangle defined
by the x, y, nWidth, and nHeight parameters of CreateWindowEx. The scroll bar has
the default height for system scroll bars. Use this style with the SBS_HORZ style.
SBS_VERT
Designates a vertical scroll bar. If you specify neither the SBS_RIGHTALIGN nor
the SBS_LEFTALIGN style, the scroll bar has the height, width, and position specified
by the x, y, nWidth, and nHeight parameters of CreateWindowEx.
#endif
/*----------------------------------------------------------------------*/