我的代码:
CPoint point1(10,10);
CPoint point2(150,150);//设置输入域的大小并创建输入域
m_pTextEdit->Create(WS_VSCROLL|WS_HSCROLL|ES_MULTILINE | ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
CRect(point1,point2), pView, 1);
this->SetTextEditPosition(pDC,pView,point);
m_pTextEdit->SetFocus();//不用鼠标点击,使光标置于edit框内
请问输入完毕后如何调整edit框的大小,使其刚好容纳输入的text,多谢!
在相应地方里获得text,然后GetTextMetrics()获得text的TEXTMETRICS,由TEXTMETRICS的tmWidth成员×strlen(text),最后就可以调整edit框的大小了,
当然,考虑到边框要保留一定的空间,可以加上一个常数,具体你可以试试。
同意楼上,得到字符串的宽度后,用MoveWindow就可以调整edit框的大小了。
void CListCtrlDlg::OnChangeEdit1()
{
CString strText ;
CWnd * pWnd = GetDlgItem(1);
pWnd ->GetWindowText(strText);
CRect r(0,0,0,0);
CDC *pDC = GetDC();
pDC->DrawText(strText,&r,DT_LEFT|DT_CALCRECT);
CRect rect(10,10,10,10);
rect.right = rect.left + r.Width() +10 ;
rect.bottom = rect.top + r.Height() + 5;
pWnd->MoveWindow(&rect);
}
推荐使用 he_zhidan(何志丹:壮志在我心) 的方法
似乎不够准确,连续按"l"或"."等窄字符就看得到较大的差异..
我用这个: GetTextExtent
GetTextExtentPoint32更强大
或者GetTextExtentPoint都是api
取得字符宽度