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

    • As the mobile enterprise marketplace expands and customer needs grow more diverse, Samsung recognizes that solution partners and developers play an essential role by continually innovating to meet their customers' needs. Samsung works to provide these developers and partners with the latest tools and resources needed to create these solutions. Read this program guide to learn how the Samsung Enterprise Alliance Program provides partners and developers with Samsung enterprise software development kits (SDKs) …

    • U.S. companies are desperately trying to recruit and hire skilled software engineers and developers, but there's simply not enough quality talent to go around. In response, companies often resort to inferior solutions -- hiring substandard developers and engineers, recruiting talent on a part-time or temporary basis, poaching people from competitors, or burdening an already stressed IT staff for more of their labor. Fortunately, there's a better solution. Read this white paper to learn the business value of …

    Most Popular Programming Stories

    More for Developers

    RSS Feeds

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