October 22, 2016
Hot Topics:

PageCounter Object for ScrollViews

  • April 16, 1999
  • By Volker Voecking
  • Send Email »
  • More Articles »

Environment: The demo project was created with VC++ 6.0 SP1

When scrolling in a document that consists of quite a lot pages it might be helpful for the user to get an information which page of the document would be displayed if he/she >would release to slider of the scrollbar at a certain position.
Microsoft Word has such a feature. It's a tooltip-like window that displays the page number that corresponds to the current position of the slider during scrolling.

I implemented a class named CScrollViewPageCounter that displays such a page number in a window that looks like a tooltip-window. If you have a look at the source code you'll find out that it was quite easy to implement. The code itself is self-explanatory...


To use the ScrollViewPageCounter-Object you have to perform the following steps:

1. Add the files ScrollViewPageCounter.h and ScrollViewPageCounter.cpp to your project.

2. Add a new member m_pScrollViewPageCounter to your scroll view class.

Of course your have to include the corresponding header file here as well:

 #include "ScrollViewPageCounter.h"

3. Create the page counter object in CYourScrollView::OnInitialUpdate()

BOOL CYourScrollView::PreCreateWindow(CREATESTRUCT& cs)

 // Instantiate the counter object
 m_pScrollViewPageCounter = new CScrollViewPageCounter( this );

4. Add a command handler for the message WM_VSCROLL:

 void CYourScrollView::OnVScroll(UINT SBCode, UINT nPos, CScrollBar* pScrollBar) 
 if ( nSBCode == SB_THUMBTRACK )
  // calculate page number (insert your algorithm here)
 UINT uiPageNumber = (UINT) (nPos / 10) + 1;

  // display page number 
  m_pScrollViewPageCounter->DisplayPageNumber( uiPageNumber );

 // when scrolling is finished we have to hide the page counter
 if ( nSBCode == SB_ENDSCROLL )
 CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
That's it.
Now compile and enjoy...

Download demo project - 33 KB

Download source - 3 KB

Date Last Updated: April 16, 1999

Comment and Contribute


(Maximum characters: 1200). You have characters left.



Enterprise Development Update

Don't miss an article. Subscribe to our newsletter below.

Sitemap | Contact Us

Thanks for your registration, follow us on our social networks to keep up-to-date
Rocket Fuel