我的系统里,在VIEW里显示了我的坐标,X方向的坐标是表示时间,Y方向是表示数值。请问我的鼠标在移动在这张坐标纸上,就让它显示出对应的横坐标时间值和纵坐标具体数值。采用浮动显示?请问如何来实现?

解决方案 »

  1.   

    1.在MainFrm.cpp的static UINT indicators[]中再加入一个成员ID_SEPARATOR,产生一个状态栏格,用于显示获得的鼠标位置。
    2.在CView类中加入事件函数WM_MouseMove。键入:
    CString str;
    CMainFrame * pFrame=(CMainFrame *)AfxGetApp()->m_pMainWnd;  //获得指针
    CStatusBar * pStatus=&pFrame->m_wndStatusBar;
    BOOL m_bDisp=pFrame->m_bDisplay;
    if(!m_bDisp)
    pStatus->SetPaneStyle(1,SBPS_DISABLED);
    else
    pStatus->SetPaneStyle(1,SBPS_NORMAL);
    if(pStatus)
    {
    str.Format("X=%d,Y=%d",point.x,point.y);
    pStatus->SetPaneText(1,str);
    }
    3.在View.cpp加入文件头#include "MainFrm.h"。
    4.在MainFrm.cpp类中加入BOOL型的变量m_bDisplay作为开关设定标识。
    5.把MainFrm类中的m_wndStatusBar改成公共变量。如果不要开关,这样就可以了!否则加上下面一步。
    6.加一个按钮,加入两个事件函数COMMAND和UPDATE_COMMAND_UI。代码分别是:
    m_bDisplay=!m_bDisplay;

    pCmdUI->SetCheck(m_bDisplay);