Displaying Cursor Position in the Status Bar

In many applications in which you use CEditView and CRichEditView classes it may be convineinent to let you user know the position of the cursor, much like the IDE in Visual C++. After some quick searching through MSDN and the CG discussion forms, I found out how easy it would be to add this feature.

  • Add a new entry to your string table with an ID of ID_INDICATOR_CURPOS and a caption of "Ln %d, Col %d  ". The extra spaces are to give you a little bit more room in the panel so when you get over 100 lines, the text doesn't get clipped.
  • Add ID_INDICATOR_CURPOS to your indicators[] array in the MainFrm.cpp file.
  • In the message map in the class declaration for CMainFrame, add the following function signiture:
    afx_msg void OnUpdateCurPosIndicator(CCmdUI *pCmdUI);
  • Now go the the acutal message map in the MainFrm.cpp file and add the following macro call:
  • Lastly, create the function body in the MainFrm.cpp file
    void CMainFrame::OnUpdateCurPosIndicator(CCmdUI *pCmdUI)
     CString strCurPos;
     int nLineNum, nColNum;
     int nSelStart, nSelEnd;
     // you're going to have to get a pointer
     // to the edit control in the view
     m_wndEditCtrl->GetSel(nSelStart, nSelEnd);  
     nLineNum = m_wndEditCtrl->LineFromChar(nSelStart);
     nColNum = nSelStart - m_wndEditCtrl->LineIndex(nLineNum);

    And that's about it. You can download a sample project if you wish, altough there's nothing special in it, really. Only thing that may be of any use is getting that pointer to the edit control.


    Download demo project - 38 Kb
    Download source - 2 Kb

  • Comments

    • Smart code, but how to show a graphics cursor position?

      Posted by Legacy on 11/15/2003 12:00am

      Originally posted by: Tom

      I creating a simple app for my own, but i have very big problem to show a graphics cursor.My app is SDI type, I want to show mouse (graphics - not text) cursor position in a status bar. Is there any truly programmer?? very thanx

    • Give reply

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

      Originally posted by: surumoradiya

      how i can attach status bar with the dialog box ?

    • I fixed Problem in MDI!!~

      Posted by Legacy on 01/22/2003 12:00am

      Originally posted by: Jin Ki Byung


      I solved the problem in MDI.

      This code is that.

      void CMyMDIChildView::OnUpdateIndicatorPosition(CCmdUI* pCmdUI)
      CString strCurPos;
      long nLineNum, nColNum;
      long nSelStart, nSelEnd;

      CRichEditCtrl& rRich = GetRichEditCtrl();
      rRich.GetSel ( nSelStart, nSelEnd );

      nLineNum = rRich.LineFromChar ( nSelStart );
      nColNum = nSelStart - rRich.LineIndex ( nLineNum );

      strCurPos.Format ( "Ln %d, Col %d", nLineNum+1, nColNum+1 );

      pCmdUI->SetText ( strCurPos );


      This function is including in MDI child view class.

    • solved the problem in MDI. ^_^

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

      Originally posted by: Y.F. Hao

      With the mouse moving, the status bar display the corresponding coordinations. hehe. It is nice codes.

    • I have a problem with the Example as MDI!

      Posted by Legacy on 10/25/2002 12:00am

      Originally posted by: asmodia


      can you or any send me the complete MDI Projekt?




    • MDI Example

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

      Originally posted by: Ted

      Add the ID_INDICATOR_??? to the CMainFrame class.
      Add the handler to the CChildFrame class.

      void CChildFrame::OnUpdateCurPos( CCmdUI *pCmdUI )
      CEditView *pView = (CEditView *)GetActiveView();

      if (pView != NULL)
      () + 1 );
      pCmdUI->SetText( txt );

    • The pane indicates always "Ln %d, Col %d"wherever the cursor is!!!!

      Posted by Legacy on 08/14/2002 12:00am

      Originally posted by: lynda

      Hi i'm lynda.
      I did the same method than shown in your example, but the pane indicates always "Ln %d, Col %d" wherever the cursor is located.
      Thanks for any suggestions!!

    • Good technic^^!!

      Posted by Legacy on 07/11/2002 12:00am

      Originally posted by: SM

      this technic is that wanted technic^^


    • What does you're going to have to get a pointer... ... mean?

      Posted by Legacy on 12/31/2001 12:00am

      Originally posted by: bn37_

      What does "you're going to have to get a pointer to the edit control in the view" mean?

      I followed the directions, but came up with errors.

    • How to use it with MDI application?

      Posted by Legacy on 12/03/2001 12:00am

      Originally posted by: Alessandro

      I can't use this code with my MDI editor, it gives me an access violation. Any suggestion? thanx

    • Loading, Please Wait ...

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

    Top White Papers and Webcasts

    • Hybrid cloud platforms need to think in terms of sweet spots when it comes to application platform interface (API) integration. Cloud Velocity has taken a unique approach to tight integration with the API sweet spot; enough to support the agility of physical and virtual apps, including multi-tier environments and databases, while reducing capital and operating costs. Read this case study to learn how a global-level Fortune 1000 company was able to deploy an entire 6+ TB Oracle eCommerce stack in Amazon Web …

    • "Security" is the number one issue holding business leaders back from the cloud. But does the reality match the perception? Keeping data close to home, on premises, makes business and IT leaders feel inherently more secure. But the truth is, cloud solutions can offer companies real, tangible security advantages. Before you assume that on-site is the only way to keep data safe, it's worth taking a comprehensive approach to evaluating risks. Doing so can lead to big benefits.

    Most Popular Programming Stories

    More for Developers

    Latest Developer Headlines

    RSS Feeds