Click here to Skip to main content
13,292,718 members (63,843 online)
Click here to Skip to main content
Add your own
alternative version


53 bookmarked
Posted 18 Dec 2002

Implementing Rulers inside of Splitter Panes - 2

, 18 Dec 2002
Rate this:
Please Sign up or sign in to vote.
Using fixed panes to add rulers to your view

Sample Image - Mdi.gif


Implementing Rulers inside of Splitter Panes - 2, is based on Stefan Ungureanu's work. This article provides an example to implementation in an MDI and SDI application.

I have changed the way to create the ruler, add function to Show/Hide the ruler and reformat some part of code.


MDI way

#include "Ruler.h"
class CChildFrame : public CMDIChildWnd
    private: CRulerSplitterWnd m_Rulers; //Ruler object
    public: void ShowRulers(BOOL bShow);//Toggle the ruler
    void UpdateRulersInfo(stRULER_INFO stRulerInfo);//Update the ruler
//Create the ruler<BR>
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, 
                                CCreateContext* pContext)
    if (!m_Rulers.CreateRulers(this, pContext)) {
        TRACE("Error creation of rulers\n");
        return CMDIChildWnd::OnCreateClient(lpcs, pContext);
    return TRUE;

//Toggle the ruler
void CChildFrame::ShowRulers(BOOL bShow)

//Update the ruler<BR>
void CChildFrame::UpdateRulersInfo(stRULER_INFO stRulerInfo)

SDI way

#include "Ruler.h"
class CMainFrame : public CFrameWnd

All the rest is the same as MDI implementation.


In your view (In this case CScrollView), catch >OnMouseMove, OnVScroll and OnHScroll messages to interact with the ruler.

//Update mouse position on the ruler<BR>
void CDemoView::OnMouseMove(UINT nFlags, CPoint point)
    UpdateRulersInfo(RW_POSITION, GetScrollPosition(), point);
    //Update vertical scroll range and position of the ruler
    void CDemoView::OnVScroll(UINT nSBCode, UINT nPos, 
                                    CScrollBar* pScrollBar)
        UpdateRulersInfo(RW_VSCROLL, GetScrollPosition());
        //Update horizontal scroll range and position of the ruler
        void CDemoView::OnHScroll(UINT nSBCode, 
                    UINT nPos, CScrollBar* pScrollBar)
            UpdateRulersInfo(RW_HSCROLL, GetScrollPosition());

and finally

void CDemoView::UpdateRulersInfo(int nMessage, CPoint ScrollPos, CPoint Pos)
    stRULER_INFO pRulerInfo;
    pRulerInfo.uMessage = nMessage;
    pRulerInfo.ScrollPos = ScrollPos;
    pRulerInfo.Pos = Pos;
    pRulerInfo.DocSize = m_ImageSize;
    pRulerInfo.fZoomFactor = m_fZoomFactor;
    //CMainFrame in SDI
    //CChildFrame in MDI

Any way, take a look in the demo!

That's it!



This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Canada Canada

You may also be interested in...

Comments and Discussions

BugCRulerSplitterWnd::CreateRulers bug Pin
ralfsch25-Nov-13 21:15
memberralfsch25-Nov-13 21:15 
Generaluse GetSysColorBrush instead of CreateSolidBrush [modified] Pin
RedFraggle13-Jun-09 10:22
memberRedFraggle13-Jun-09 10:22 
QuestionHow to use it in diffent map mode??? Pin
wp51_cn11-Feb-07 3:15
memberwp51_cn11-Feb-07 3:15 
GeneralGreat work! Pin
kellyonlyone13-Mar-06 0:42
memberkellyonlyone13-Mar-06 0:42 
QuestionCan I add to a dialog? Pin
St.Devil8-Oct-05 18:01
memberSt.Devil8-Oct-05 18:01 
GeneralTotally Wrong Idea Pin
Martial Spirit31-Jan-05 19:16
memberMartial Spirit31-Jan-05 19:16 
GeneralRe: Totally Wrong Idea Pin
smjones24-Mar-05 14:04
membersmjones24-Mar-05 14:04 
QuestionCan I add the rulers &quot;inside&quot; a splitter window? Pin
Nathan Yong25-Jan-05 17:08
memberNathan Yong25-Jan-05 17:08 
Generalbug: changing zoom doesn't refresh ruler windows Pin
Keith Bussell13-Jan-05 13:32
memberKeith Bussell13-Jan-05 13:32 
GeneralI tried to use your classes but something's wrong Pin
islobell8-May-04 1:22
memberislobell8-May-04 1:22 
GeneralOh, the code finally appeals! Pin
xxxyyyzzz22-Dec-02 21:42
memberxxxyyyzzz22-Dec-02 21:42 
After almost two years waiting, we are happy to find that someone complete the code finally.
However, it seems the speed is too slow.
GeneralRe: Oh, the code finally appeals! Pin
feier6-Aug-03 19:05
sussfeier6-Aug-03 19:05 
GeneralGood GUI, Low Speed Pin
xuell0019-Dec-02 18:05
memberxuell0019-Dec-02 18:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.171207.1 | Last Updated 19 Dec 2002
Article Copyright 2002 by DCUtility
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid