2012-06-28 79 views
0

我從CEdit控件獲取文本。我需要模仿圖片上的相同文字。編輯控件是多行的,所以當我繼續輸入長字符串時,這個單詞的剩餘部分會進入下一行。 我沒有得到在CEdit中字符在下一行的哪個文本索引。發生換行的CEdit索引

所以,當試圖做到這一點,如果行的寬度超過矩形的寬度,我可以插入「\ 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; 
} 

感謝

回答