如何使Static控件中的文本自动换行
1个回答
2016-02-10
展开全部
不要SS_LEFTNOWORDWRAP的风格是会自动换行,这没错,但是控件高度不会变,所以如果文本长了,后面的就看不见了,实际上,如果你用MoveWindow调整一下它的大小,增加高度,就可以看到后面的
你看看我的例子吧:
void CTestDlg::OnButton1()
{
CWnd * pWnd = GetDlgItem(IDC_STATIC_TEXT);
CString str;
pWnd->GetWindowText(str);
CString sTitle = str;
sTitle += str;
CDC * pDC = pWnd->GetDC();
CSize sz = pDC->GetTextExtent(sTitle);
CRect rc;
pWnd->GetWindowRect(&rc);
ScreenToClient(&rc);
int nRatio = (sz.cx+2)/rc.Width() +1;
rc.bottom = rc.top + (sz.cy) * nRatio;
pWnd->MoveWindow(&rc);
pWnd->SetWindowText(sTitle);
}
每次点击按钮都会将标题长度*2,这里我保持的是控件宽度不变来计算换行后需要的高度~
你看看我的例子吧:
void CTestDlg::OnButton1()
{
CWnd * pWnd = GetDlgItem(IDC_STATIC_TEXT);
CString str;
pWnd->GetWindowText(str);
CString sTitle = str;
sTitle += str;
CDC * pDC = pWnd->GetDC();
CSize sz = pDC->GetTextExtent(sTitle);
CRect rc;
pWnd->GetWindowRect(&rc);
ScreenToClient(&rc);
int nRatio = (sz.cx+2)/rc.Width() +1;
rc.bottom = rc.top + (sz.cy) * nRatio;
pWnd->MoveWindow(&rc);
pWnd->SetWindowText(sTitle);
}
每次点击按钮都会将标题长度*2,这里我保持的是控件宽度不变来计算换行后需要的高度~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询