![]() |
#2
rjsp2019-11-26 18:22
|
现在已知有一个固定的区域
CRect rect;
rect.SetRect(left, top, right, bottom);
rect.SetRect(left, top, right, bottom);
有一个字符串,该字符串可能较长,且由中文和字母组成,需要根据该区域进行字符串的显示,其问题点在于如何规范分割换行点,遇到需要分割换行时,区分汉字和字母,以确保不乱码;
目前需要一个函数能够实现此功能,希望得到答疑解惑:

/*绘制文本(以区域为基准):textcolor-文字颜色,bkcolor-背景色,left,top,right,bottom-区域,size-字体大小*/
void CDrawJM::DrawTextAboutRect(CDC *pDC, COLORREF textcolor, COLORREF bkcolor, CString m_strText, unsigned int left, unsigned int top, unsigned int right, unsigned int bottom, unsigned int size)
{
CFont *oldFont;
CFont m_textFont;
m_textFont.CreateFont(size, 0, 0, 0, FW_BOLD, 0, 0, 0, ANSI_CHARSET, OUT_STROKE_PRECIS,
CLIP_STROKE_PRECIS, DRAFT_QUALITY, VARIABLE_PITCH | FF_SWISS, _T("宋体")); //size-字体大小
oldFont = pDC->SelectObject(&m_textFont);
pDC->SetTextColor(textcolor); //设置字体颜色
pDC->SetBkColor(bkcolor); //设置字体背景色
//该部分为实现区域自适应显示字符串功能代码,文字显示可使用库函数 pDC->TextOut(a,b,str);
pDC->SelectObject(oldFont);
m_textFont.DeleteObject();
}
[此贴子已经被作者于2019-11-26 18:13编辑过]