'Scroller' is a bare-bones custom control suitable for use as the basis for a whole host of custom controls which need to offer scrolling facilities. (e.g. one of the demos creates a scrollable image control which can be used straight out of the box!)
Creating any custom control is a technical and demanding process. Creating one which offers full scrolling capabilities can be very demanding indeed!

The first thing to say is that Scroller takes a completely different approach to scrolling than PB's ScrollArea gadget. A ScrollArea gadget uses an 'inner-container' which is moved around to simulate scrolling. A very useful control, but limited to a scrolling range of 32767 pixels due to certain Windows limitations. Custom controls based upon this gadget, therefore, will be subject to the same limitations (as I have discovered. Doh!)
Scroller has no such limitations as it does not use an inner-container. Instead it utilises the appropriate Windows messages and functions to offer it's scrolling facilities. A somewhat complex process in all and for those not in the know, slapping a set of scrollbars on a window/control does not mean that the window/control will be able to scroll it's contents etc. This is a common misconception. Windows offers nothing in the way of automating the scrolling operations etc.
Any custom control based upon Scroller can call upon the latter for all (or some) of it's scrolling needs. Scroller can handle all of the scroll-box positioning, the page sizes and physically scrolls the client area where possible.
The custom control will have to take charge of the painting in order to give some content to the control etc. but Scroller can take charge of the scrolling aspects.
See the various demo programs for some examples of putting Scroller to use.
Of course, more complex custom controls will need to override some (or even all!) of Scroller's default behaviour and take personal charge of the scrolling itself. For example, I myself shall be using Scroller as the basis of a new grid control. This control will need to override Scroller's scrolling routines in order to scroll just parts of the client area (as opposed to the entire client area!)
The relevant page on the nxSoftware site gives a lot more details about Windows scrolling than I can give here.
The Scroller download includes the following :
- Full source code
- A simple bare-bones demo
- A custom demo showing a customised painting process in order to give the control some content
- A full demo of creating a scrollable control based upon Scroller. In this case we have an ImageScroller control - a scrollable image gadget. (The equivalent using Purebasic requires 3 controls; a ScrollArea + a ScrollArea's inner container + an ImageGadget, all of which are subject to the aforementioned 32767 pixel limitation!).

In cases where Scroller is perhaps not appropriate because of the need to customise the scrolling to such an extent that a new control is perhaps more suitable, Scroller could nevertheless prove useful as a learning aid for those new to the business of creating custom controls and new to the work involved in scrolling a window or control's client area.

Please see the nxSoftware site for the download and for a more detailed description etc.
Regards.
Stephen.