首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发生换行的CEdit索引

发生换行的CEdit索引
EN

Stack Overflow用户
提问于 2012-06-28 21:29:06
回答 1查看 320关注 0票数 0

我正在从CEdit控件获取文本。我需要在图像上模仿相同的文本。编辑控件是多行的,所以当我继续输入long string时,单词的剩余部分会转到下一行。我不知道字符在CEdit中的下一行是哪个文本索引。

因此,当尝试这样做时,如果线的宽度超过矩形的宽度,我可以插入"\r\n“。但问题是,如果对齐是居中,则插入的"\r\n“之后的字符被DrawText应用编程接口视为新词,并且上述插入新行字符的目的失败。

有没有人可以让我知道,有没有什么方法可以让我知道在CEdit中,这条线是在哪里打破的,或者是其他类似的方式。

代码语言:javascript
复制
CString strTempFormattedText(_T(""));
LONG tempTotalWidth = 0;
for(int i = 0; i < myText.GetLength(); i++) {
    TCHAR tempChar = myText.GetAt(i);
    tempTotalWidth += pDC->GetTextExtent(CString(tempChar), 1).cx;
    if(tempTotalWidth >= rc.Width()) {
        tempTotalWidth = 0;
        strTempFormattedText.Append(_T("\n\r"));
    }
    strTempFormattedText.AppendChar(tempChar);
}
myText = strTempFormattedText;
switch(ALIGNMENT)
{
    case RIGHT:
        pDC->DrawText(myText, -1, rc, DT_WORDBREAK | DT_RIGHT );
        break;
    case CENTER:                                                       
        pDC->DrawText(myText, -1, rc, DT_WORDBREAK | DT_CENTER);
        break;
    case LEFT:
        pDC->DrawText(myText, -1, rc,  DT_WORDBREAK | DT_LEFT);
        break;   
}

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-06-28 22:05:00

我认为你应该结合LineIndexLineLengthPosFromChar来解决你的问题。如果您需要访问更复杂的CRichEditText,那么使用API而不是数据可能会很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11245753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档