请问如何获得CRichEditCtrl中的字符的位置,某个位置上字符的置,还有光标的位置昨天发了个贴子,不晓得是不是嫌分少,还是我没有说清楚,硬是没人回
望各位大虾救救小弟,感激不尽!!!!
先谢过!!

解决方案 »

  1.   

    CRichEditCtrl::FindText()得到某个字符位置;
    CRichEditCtrl::GetCharPos()得到某个位置上的字符,
    CWnd::GetCaretPos()得到光标位置,
      

  2.   

    CRichEditCtrl::FindText()得到某个字符第一次出现的位置;
      

  3.   

    GetCaretPos()得到的光标位置是以象素为单位的吧
    我想要的是以字符为单位的(即光标在第几行第个列)
    另外还要第x行x列的字符是什么
      

  4.   

    这些东西应该是算出来的。
    CDC::GetTextExtent获得字符或者字符串的宽度和高度。获得某个字符的位置大概是这样:
    CRichEditCtrl::FindText,这个函数就像查找一样,返回一个相对于前面的一个字符数目。想要的是以字符为单位的光标位置.先用GetCaretPos()得到一个point,然后
    x = point.x / 字符宽度; //得到第几个字符
    y = point.y / 字符高度;//得到第几行获得第x行字符串文本, 
    int GetLine( int nIndex, LPTSTR lpszBuffer ) const;
    int GetLine( int nIndex, LPTSTR lpszBuffer, int nMaxLength ) const;我就记得个大概,windows程序设计(上册)有专门讲这个的,你查查。
      

  5.   

    int st, end;
    int linechar;
             edit.GetSel(st, end);
             int row = 1;
    while(true)
    {
    linechar = edit.LineIndex(row);
    if(linechar > st || linechar == -1) break;
    row++;
    }
    linechar = edit.LineIndex(row-1);
    int col = st - linechar;
    row和col分别是行号和列号, edit 是你的RichEditCtrl
    光标的位置就用GetSel就可以得到了
      

  6.   

    我试了一下,觉得用GetSel()获得光标位置是一个好方法!
    多谢各位了