请问怎样自动调节Edit Control的宽度=文字的长度?

csdnexplorer 2002-08-03 02:54:12
Edit Control是single line的。
怎样使Edit框的宽度恰好为整行文字的长度?
...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
goumi 2002-08-03
  • 打赏
  • 举报
回复
首先估算一下当前每个字符的所占的宽度,再得到整行文字的长度。设置Edit控件的宽度:

UpdateData(true);
CDC * pDC=GetDC();
TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);
pDC->SetMapMode(MM_TEXT);
int EditWidth=m_EditText.GetLength()*tm.tmAveCharWidth+5;

CWnd *pWnd;
pWnd=GetDlgItem(IDC_EDIT_TEST);
CRect rect;
pWnd->GetWindowRect(rect);
ScreenToClient(&rect);
pWnd->MoveWindow(rect.TopLeft().x,rect.TopLeft().y,EditWidth,rect.Height());

ReleaseDC(pDC);
goumi 2002-08-03
  • 打赏
  • 举报
回复
首先估算一下当前每个字符的所占的宽度,再得到整行文字的长度。设置Edit控件的宽度:

UpdateData(true);
CDC * pDC=GetDC();
TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);
pDC->SetMapMode(MM_TEXT);
int EditWidth=m_EditText.GetLength()*tm.tmAveCharWidth+5;

CWnd *pWnd;
pWnd=GetDlgItem(IDC_EDIT_TEST);
CRect rect;
pWnd->GetWindowRect(rect);
ScreenToClient(&rect);
pWnd->MoveWindow(rect.TopLeft().x,rect.TopLeft().y,EditWidth,rect.Height());

ReleaseDC(pDC);
goumi 2002-08-03
  • 打赏
  • 举报
回复
首先估算一下当前每个字符的所占的宽度,再得到整行文字的长度。设置Edit控件的宽度:

UpdateData(true);
CDC * pDC=GetDC();
TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);
pDC->SetMapMode(MM_TEXT);
int EditWidth=m_EditText.GetLength()*tm.tmAveCharWidth+5;

CWnd *pWnd;
pWnd=GetDlgItem(IDC_EDIT_TEST);
CRect rect;
pWnd->GetWindowRect(rect);
ScreenToClient(&rect);
pWnd->MoveWindow(rect.TopLeft().x,rect.TopLeft().y,EditWidth,rect.Height());

ReleaseDC(pDC);
csdnexplorer 2002-08-03
  • 打赏
  • 举报
回复
不为定值
"abcD "的长度就是
SIZE size ;
GetTextExtentPoint (hdc, TEXT ( "abcD "), strlen("abcD"), &size) ;
size.cx ;
csdnexplorer 2002-08-03
  • 打赏
  • 举报
回复
"abcD"的长度就是
GetTextExtentPoint (hdc, TEXT ("abcD"), 1, &size) ;
size.cx ;
csdnexplorer 2002-08-03
  • 打赏
  • 举报
回复
不为定值
在当前字体下,
'a'的宽度度为:
SIZE size ;
GetTextExtentPoint (hdc, TEXT ("a"), 1, &size) ;
size.cx ;
'M'的高度度为
GetTextExtentPoint (hdc, TEXT ("a"), 1, &size) ;
size.cy ;
字符串的长度是所有字符的宽度之和。
dy_paradise 2002-08-03
  • 打赏
  • 举报
回复
你的文字长度为一定值?
yoyo2002 2002-08-03
  • 打赏
  • 举报
回复
先大约算一下一个字节占的像素,得到CString的长度 × 一个字节占的像素。
wuxuan 2002-08-03
  • 打赏
  • 举报
回复
http://www.codeguru.com/editctrl/index.shtml

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧