我从CEdit控件获取文本。我需要在图像上模仿相同的文字。编辑控件是多行的,所以当我继续输入长字符串时,单词的剩余部分将转到下一行。 我没有得到CEdit中哪个文本索引的字符在下一行。
因此,在尝试这样做时,如果行的宽度超过rect的宽度,我可以插入“\ r \ n”。但问题是,如果插入的“\ r \ n”被DrawText api视为新单词后对齐是字符的中心,则上述插入新行字符的目的会失败。
有人可以让我知道吗,有什么方法我可以知道CEdit中的线路在哪里或者相同的替代品。
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;
}
由于
答案 0 :(得分:0)
我认为您应该合并LineIndex,LineLength和PosFromChar来解决您的问题。如果您需要访问更复杂的CRichEditText,则使用API而不是数据可能很有用。