Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. How to get cursor position in status bar?

How to get cursor position in status bar?

Scheduled Pinned Locked Moved C / C++ / MFC
questiondata-structureshelptutorialannouncement
13 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Vladislav Gospodinov

    Well that is the problem :P I've added SetCapture() when you press LButton, but I'm not rly sure if I need it?

    void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default
    SetCapture();
    CFrameWnd::OnLButtonDown(nFlags, point);
    }

    void CMainFrame::OnMouseMove(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default
    if(GetCapture()==this){
    posX=point.x;
    posY=point.y;
    }
    CFrameWnd::OnMouseMove(nFlags, point);
    }

    void CMainFrame::OnUpdateCursor(CCmdUI *pCmdUI){
    CString pos;
    pos.Format(ID_INDICATOR_CURSOR,posX,posY);
    m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CURSOR),pos);
    }

    Well atleast now the sting is updated with 0's. Its defined as " x: %d ,y: %d ". So the OnUpdateCursor() is working but not with the right values...

    J Offline
    J Offline
    jeron1
    wrote on last edited by
    #4

    What happens when you change your Format statement to

    pos.Format(" x: %d ,y: %d " ,posX,posY);

    V 1 Reply Last reply
    0
    • J jeron1

      What happens when you change your Format statement to

      pos.Format(" x: %d ,y: %d " ,posX,posY);

      V Offline
      V Offline
      Vladislav Gospodinov
      wrote on last edited by
      #5

      Nothing. Stays the same:

      "x: 0 , y: 0"

      J 1 Reply Last reply
      0
      • V Vladislav Gospodinov

        Nothing. Stays the same:

        "x: 0 , y: 0"

        J Offline
        J Offline
        jeron1
        wrote on last edited by
        #6

        It that the value of pos immediately after the Format() call?

        V 1 Reply Last reply
        0
        • J jeron1

          It that the value of pos immediately after the Format() call?

          V Offline
          V Offline
          Vladislav Gospodinov
          wrote on last edited by
          #7

          Yes... Seems like OnMouseMove doesn't update posX and posY. If I do :

          void CMainFrame::OnUpdateCursor(CCmdUI *pCmdUI){
          CString pos;
          posX=100;
          posY=200;
          pos.Format(L" x: %d ,y: %d ",posX,poxY);
          m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CURSOR),pos);
          }

          It does put

          "x: 100,y: 200"

          in the status bar...

          J 1 Reply Last reply
          0
          • V Vladislav Gospodinov

            Yes... Seems like OnMouseMove doesn't update posX and posY. If I do :

            void CMainFrame::OnUpdateCursor(CCmdUI *pCmdUI){
            CString pos;
            posX=100;
            posY=200;
            pos.Format(L" x: %d ,y: %d ",posX,poxY);
            m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CURSOR),pos);
            }

            It does put

            "x: 100,y: 200"

            in the status bar...

            J Offline
            J Offline
            jeron1
            wrote on last edited by
            #8

            So, it looks like GetCapture() != this, perhaps have a look at this[^] article.

            1 Reply Last reply
            0
            • V Vladislav Gospodinov

              Well that is the problem :P I've added SetCapture() when you press LButton, but I'm not rly sure if I need it?

              void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
              {
              // TODO: Add your message handler code here and/or call default
              SetCapture();
              CFrameWnd::OnLButtonDown(nFlags, point);
              }

              void CMainFrame::OnMouseMove(UINT nFlags, CPoint point)
              {
              // TODO: Add your message handler code here and/or call default
              if(GetCapture()==this){
              posX=point.x;
              posY=point.y;
              }
              CFrameWnd::OnMouseMove(nFlags, point);
              }

              void CMainFrame::OnUpdateCursor(CCmdUI *pCmdUI){
              CString pos;
              pos.Format(ID_INDICATOR_CURSOR,posX,posY);
              m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CURSOR),pos);
              }

              Well atleast now the sting is updated with 0's. Its defined as " x: %d ,y: %d ". So the OnUpdateCursor() is working but not with the right values...

              D Offline
              D Offline
              David Crow
              wrote on last edited by
              #9

              In OnMouseMove(), what is the value of point.x and point.y?

              "One man's wage rise is another man's price increase." - Harold Wilson

              "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

              "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

              V 1 Reply Last reply
              0
              • D David Crow

                In OnMouseMove(), what is the value of point.x and point.y?

                "One man's wage rise is another man's price increase." - Harold Wilson

                "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                V Offline
                V Offline
                Vladislav Gospodinov
                wrote on last edited by
                #10

                I can't rly get the debuger to stop there ... It's kinda like skipping it all? Any other way of checking ?

                D 1 Reply Last reply
                0
                • V Vladislav Gospodinov

                  Hello...This question may sound silly to some of you but I've been stuck on it for few days and can't find any answer... So I need to have the mouse position x and y displayed in the status bar. So far I add new string to the table, in the indicators array, afx_msg void OnUpdateCurPos(CCmdUI *pCmdUI) in the message map and ON_UPDATE_COMMAND_UI(ID_INDICATOR_CURSOR,OnUpdateCurPos) When I run it's there but can't find the right way to update the cords. I think it must work with ON_MOUSEMOVE func...I've tried several codes in ON_MOUSEMOVE and OnUpdateCurPos but it doesn't work at all... Working with SDI.

                  S Offline
                  S Offline
                  Software_Developer
                  wrote on last edited by
                  #11

                  Try this!

                  void CDlgStatusBarDlg::OnMouseMove(UINT nFlags, CPoint point)
                  {
                  CString s;
                  s.Format("X=%d Y=%d",point.x,point.y);
                  m_bar.SetPaneText(0,s);
                  CDialog::OnMouseMove(nFlags, point);
                  }

                  Source: [Adding a status bar to an MFC dialog[^]]

                  1 Reply Last reply
                  0
                  • V Vladislav Gospodinov

                    I can't rly get the debuger to stop there ... It's kinda like skipping it all? Any other way of checking ?

                    D Offline
                    D Offline
                    David Crow
                    wrote on last edited by
                    #12

                    Vladislav Gospodinov wrote:

                    Any other way of checking ?

                    TRACE().

                    "One man's wage rise is another man's price increase." - Harold Wilson

                    "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                    "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                    V 1 Reply Last reply
                    0
                    • D David Crow

                      Vladislav Gospodinov wrote:

                      Any other way of checking ?

                      TRACE().

                      "One man's wage rise is another man's price increase." - Harold Wilson

                      "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                      "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                      V Offline
                      V Offline
                      Vladislav Gospodinov
                      wrote on last edited by
                      #13

                      So it doesn't TRACE() anything at all when called in

                      CMainFrame::OnMouseMove

                      so it's like it doesn't get the mouse moving at all in MainFrame class... it does trace correct values if I call it in the View class

                      CpositionView::OnMouseMove

                      however I can't find a way to send them from View to MainFrame, although I have included ***View.h and taka them like

                      CpositionView::positionX

                      I get a lot of errors :P

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups