用GetCursorPos(&pt)可获得当前光标的位置,但怎样像一般编辑器那样,随时获得光标的位置(行列),并将其显示在状态栏上?

解决方案 »

  1.   

    在View的OnMouseMove消息中,将消息函数中的point值写到状态栏中就可以了。
      

  2.   

    我用了定时器,现在的问题居然是:GetCursorPos(lp);或GetCaretPos(lp);都不能获得光标的位置。不管我的光标移到哪,lp始终都为null。这是什么问题啊?
      

  3.   

    你用法不对
    CPoint pt;
    GetCursorPos(&pt);
      

  4.   

    鼠标的当前位置是指鼠标指针的位置。它与光标当前在编辑器中的位置不一样。
    我按照 ymbymb(毛病大哥) 的用法,结果获得的还是鼠标指针的位置。
      

  5.   

    这是richeditview的,相应的editview也有相同的函数。
    void CMyView::GetCurrentPosition(int& iLine, int& iCol)
    {
    CRichEditCtrl& theCtrl = this->GetRichEditCtrl();
    // 获取当前行号
    iLine = theCtrl.LineFromChar(-1); int nLineStartPos = theCtrl.LineIndex(); long nSelStart, nSelEnd;
    theCtrl.GetSel(nSelStart, nSelEnd); iCol = nSelStart-nLineStartPos+1;
    }
      

  6.   

    class CStatusBarView : public CRichEditView
    {
     ……
     }void CStatusBarView::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    LPPOINT lp=NULL;

    BOOL b=::GetCursorPos(lp);
             CString str;
    CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
    CStatusBar* pStatus=&pFrame->m_wndStatusBar;
    if(!b)
    str="";
    else
    str.Format("Ln %d, Col %d",lp->x,lp->y);

    if (pStatus){
    pStatus->SetPaneText(0,str);
    }
    ……
    }
    以上是我用的代码,运行过程中,b一直为0;
      

  7.   

    用OnMouseMove消息是正招呀!!状态栏上用point就ok!◎
      

  8.   

    GetCursorPos是获取鼠标的位置。
    要获取关标的位置,可以用我说的办法。