请教一下各位高手怎么样才能让Lebel控件自动换行呀!!!!最好能有代码示例,小弟在这里先谢了
解决方案 »
- WriteFile与ReadFile WriteFile写入串口后怎么才能判断是否有返回值,如果立即ReadFile有时是返回不了值,怎么处理?
- 模拟回车按键自动关闭消息框的弹出窗口
- 请问为什么获取不了用maxthon2.x里打开的网页里的控件?
- 建注册表的直??
- 如何实现和QQ一样的拖拉到屏幕边缘就能隐藏窗口的代码?
- 100分紧急求助,U盘误操作,如何恢复其中的数据?
- hough变换检测直线,谁有源码?
- (救命)断电后.dsw打不开了怎么办?
- 为什么我的软件会有这样的问题???
- 如何写ADO联接SQLserver的联接字符串?菜鸟提问快没份了只有10分
- 再线等待《急急急……》面试题目:帮帮忙吧!贵人指点!!!!!!
- 如何管理消息?
-----------------------------------------------------------
void CAutoLineStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
/*
//下面7行代码是根据界面中控件的大小自动换行的
CRect rect;
this->GetWindowRect(&rect);
ScreenToClient(&rect);
CString str;
this->GetWindowText(str);
dc.DrawText(str, rect,DT_EDITCONTROL|DT_WORDBREAK);
return;
*/ //下面代码则是根据用户指定文本长度自动换行,如15个全角字符长度
//并把界面中控件的宽度自动调整到合适的大小
CRect rect;
CSize size(0,0); this->GetWindowRect(rect);
GetParent()->ScreenToClient(&rect);
//随便15个全角字符,以便计算长度,这里是15个全角的空格
CString str=" ";
CFont *pOldFont=dc.SelectObject(GetParent()->GetFont());
::GetTextExtentPoint32((HDC)dc,str,str.GetLength(),&size);
rect.right=rect.left+size.cx;
this->MoveWindow(rect);
rect.right-=rect.left;
rect.bottom-=rect.top;
rect.left=0;
rect.top=0;
this->GetWindowText(str);
dc.DrawText(str,rect,DT_EDITCONTROL|DT_WORDBREAK);
dc.SelectObject(pOldFont); // Do not call CStatic::OnPaint() for painting messages
}
-----------------------------------------------------------代码粗糙了点,方法也和我前面提到的不大一样,呵呵,不过可以实现要求。
E-Mail:[email protected]
void CMmDlg::OnButton2()
{
CRect rect;
CSize size(0,0);
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_STATIC1);
pStatic->GetWindowRect(rect);
ScreenToClient(rect);
CClientDC dc(pStatic);
//随便写15个字符长度来计算宽度,这里用15个全角空格
CString str=" ";
CFont *pOldFont=dc.SelectObject(this->GetFont());
::GetTextExtentPoint32((HDC)dc,str,str.GetLength(),&size);
rect.right=rect.left+size.cx+2;
//直接调整控件的大小就行了,它会自动换行的,不过注意控件属性中不要有No Wrap风格
pStatic->MoveWindow(rect);
}
{
CRect rect;
CSize size(0,0); CStatic *pStatic=(CStatic *)GetDlgItem(IDC_STATIC);
pStatic->GetWindowRect(rect);
pStatic->ScreenToClient(rect); CClientDC dc(pStatic); CString str="vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavv";
CFont *pOldFont=dc.SelectObject(pStatic->GetFont());
::GetTextExtentPoint32((HDC)dc,str,str.GetLength(),&size); dc.DrawText(str,rect,DT_EDITCONTROL|DT_WORDBREAK); dc.SelectObject(pOldFont); DeleteObject( dc);
pStatic->InvalidateRect( rect);
}
这是我写的代码,可以自动换行并且写出字符串,但是我发现这个虽然写的区域是正确的,但好像不是在IDC_STATIC Label控件上改的.void CMyMessageBoxDlg::OnButton2()
{
CString csData;
CWnd* pWnd; csData = _T("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac");
pWnd = GetDlgItem( IDC_STATIC);
pWnd->SetWindowText( csData);
}
我用OnButton2测试了一下,OnButton1改变的不是IDC_STATIC Label控件