在编辑框中,我想使用setcaretpos把当前光标后移几个字符,
好像参数point和象素相关,如何转化字符数为point呢?

解决方案 »

  1.   

    用这个吧:CEdit::SetSel()void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );将nStartChar和nEndChar设置成一样的位置(光标的位置)。
      

  2.   

    简单!
    首先用
    TEXTMETRIC tm;
    GetTextMetrics(hdc,&tm);
    获得字体的尺寸
    int cxChar=tm.tmAveCharWidth;
    POINT pt;
    GetCaretPos(&pt);
    int iSpace=10;
    SetCaretPos(pt.x+10*cxChar,pt.y);//后移10个字符
    -----------------------------
    当然了最好考虑能否到达下一行,如果已经换行则需要另外处理
    如果是edit控件就不需要考虑了
    ------------------------------
    <windows programming>charles petzold写的
    讲得很清楚
      

  3.   

    前提是你用的是等宽字体
    否则比较麻烦
    -----------------
    HDC hdc=GetDC(this->m_hWnd);
    SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
      

  4.   

    不是已经回答过吗?
    看来你没有看明白,这里详细说一下,
    设你的EDIT为m_edit,m_edit.SetWindowText("safsdgdfg");
    m_edit.SetFocus();
    CPoint pt = m_edit.PosFromChar(4);//假设要放在第四个那里
    m_edit.SetCaretPos(pt);或使用
    m_edit.SetWindowText("safsdgdfg");
    m_edit.SetFocus();
    m_edit.SetSel(4,4); 如果你是用在OnInitDialog()中,那么你把最后面那个
    return TRUE;改为
    return FALSE;