Implementing Rulers inside of Splitter Panes

Environment: -->

Introduction

Many applications that display images or documents show rulers on both sides of the view to indicate your position within the page and allow a more accurate positioning of the cursor. Implementing rulers can be difficult, since we must reserve a space for them inside the view (this gets more difficult on a CScrollView-derived class). Another solution is to use "fixed" splitters (meaning they cannot be resized). The example below demonstrates how to build such rulers.

The code

The code implementing the ruler splitter window and views used for the rulers themselves can be found in ruler.h and ruler.cpp. Below is a sample of how to use them.

Inside the frame window (which can be either a CFrameWnd or CMDIChildWnd-derived class)

// class definition
class CMainFrame : public CFrameWnd
{
[...]
protected:
	DECLARE_FX_RULER(CMainFrame)

The next step is to create the splitter itself and the views. The code below matches a SDI application that accomodates the code above inside a splitter pane, but you can easily adjust it to fit your needs. In the OnCreateClient member of the CMainFrame class, add code to create the splitter inside the right pane:

// class definition
IMPLEMENT_FX_RULER_SPLITTER(<className>, <parentSplitter>, 0, 1, pContext->m_pNewViewClass);

What you have to do next is send notifications to the rulers to let them know about the scroll position change or zoom change. The rulers can also display the mouse position as the cursor moves; this is done also by sending notifications to the rulers with just a few lines of code like:

// class definition
GetDocument()->UpdateAllViews(this, VW_VSCROLL, (CObject*)(GetScrollPosition().y));

Available hint types are (hint parameters are passed as INTs using a cast to CObject*):

VW_HSCROLL View is scrolled horizontally
VW_VSCROLL View is scrolled vertically
VW_HPOSITION Cursor position changed on the x axis
VW_VPOSITION Cursor position changed on the y axis

The code is quite easy to follow and change to meet your needs, but if you need assistance, contact me. Also please send me bugs or updates, to keep this solution up-to-date. For more details on the sample application, contact me.

Download source - 5 KB

Date Last Updated: February 3, 1999



Comments

  • Thank you very much!!!

    Posted by Legacy on 01/15/2004 12:00am

    Originally posted by: kpld

    Thanks a lot!!!!!!!

    Reply
  • Here

    Posted by Legacy on 09/03/2003 12:00am

    Originally posted by: Tom Tom

    http://www.codeproject.com/splitter/ruler.asp

    Reply
  • Help with source code

    Posted by Legacy on 09/02/2003 12:00am

    Originally posted by: Ivan

    I'm trying to implement a ruler such as shown in your article. But I'm having trouble integrating your codes into my application. Can you e-mail me the whole source code used for implementing the ruler application so that I can see what went wrong with my integration?

    Thanks in advance.
    Ivan

    Reply
  • what is m_wndBar?

    Posted by Legacy on 07/10/2003 12:00am

    Originally posted by: propeller

    I have read your code, but I don't know what is of m_wndBar,
    would you like to explain for me?
    Thank you a lot.

    Reply
  • Need more source code

    Posted by Legacy on 07/09/2003 12:00am

    Originally posted by: Klaus H.

    Your implementation seems to be exactly what I need, but unfortunately I can't get my application built after integrating your code (many undefined items/functions). So I'd be deeply grateful if you could provide me the source code of your application as a whole, to see how I have to amend my
    application so that it works together with your implementation.

    Many thanks in advance
    and best regards

    Reply
  • Tom Tom, Thank you very much....!!!(^▽^)//

    Posted by Legacy on 03/14/2003 12:00am

    Originally posted by: Niccole Mai

    The material is excellent!!!I indebted to you for I made program easily... Thank very much.

    Reply
  • a reference web site

    Posted by Legacy on 03/02/2003 12:00am

    Originally posted by: TomTom

    You had better to see the below site:
    http://www.codeproject.com/useritems/Ruler.asp

    Reply
  • Would you show me your .exe file & program source code?...

    Posted by Legacy on 02/28/2003 12:00am

    Originally posted by: Niccole Mai

    I will insert "ruler" at my program...
    So, My programming standard is low...<(^ ^; )
    If you show me, I will thank to you.

    Reply
  • How about a demo source?

    Posted by Legacy on 12/19/2002 12:00am

    Originally posted by: Huynh Ba Thuy

    Dear Stefan Ungureanu,
    Your article is excellent but I can't follow your steps in this paper.I don't understand it. Could you give me a demo source sothat I can complite and run it?
    Thank you very much.
    Yours sincerely.

    Reply
  • Help me!

    Posted by Legacy on 09/17/2002 12:00am

    Originally posted by: lbwtusm

    I cann't use the code in my programe , somebody help me!
    I'll thanks a lot !
    Best Regards!

    Reply
  • Loading, Please Wait ...

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: May 6, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT While you likely have very good reasons for remaining on WinXP after end of support -- an estimated 20-30% of worldwide devices still are -- the bottom line is your security risk is now significant. In the absence of security patches, attackers will certainly turn their attention to this new opportunity. Join Lumension Vice President Paul Zimski in this one-hour webcast to discuss risk and, more importantly, 5 pragmatic risk mitigation techniques …

  • When it comes to desktops – physical or virtual – it's all about the applications. Cloud-hosted virtual desktops are growing fast because you get local data center-class security and 24x7 access with the complete personalization and flexibility of your own desktop. Organizations make five common mistakes when it comes to planning and implementing their application management strategy. This eBook tells you what they are and how to avoid them, and offers real-life case studies on customers who didn't …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds