当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 如题!!! ......
 ·    »显示摘要«
    摘要: 我是一个asp新手,我用sql server2000,在用odbc连接数据库时出问题,我定义的数据库名是data,没有设密码,其中有一个表叫username,我是这么连接的不知道有没有什么问题:set my_conn = server.createobject("adodb.connection") strconnstring = "driver={sql s......


动态创建edit并输入text之后,如何根据内容调整edit框的大小

我的代码:  
  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,多谢!

NO.1   作者: babynuaa

在相应地方里获得text,然后GetTextMetrics()获得text的TEXTMETRICS,由TEXTMETRICS的tmWidth成员×strlen(text),最后就可以调整edit框的大小了,  
   
  当然,考虑到边框要保留一定的空间,可以加上一个常数,具体你可以试试。  
 

NO.2   作者: dizzo

同意楼上,得到字符串的宽度后,用MoveWindow就可以调整edit框的大小了。

NO.3   作者: he_zhidan

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);  
  }  
 

NO.4   作者: iamknight

推荐使用   he_zhidan(何志丹:壮志在我心)   的方法

NO.5   作者: bcpl

似乎不够准确,连续按"l"或"."等窄字符就看得到较大的差异..

NO.6   作者: pzm

我用这个:   GetTextExtent

NO.7   作者: BSRONG

GetTextExtentPoint32更强大  
  或者GetTextExtentPoint都是api  
 

NO.8   作者: cxf1976

取得字符宽度


    摘要: 我沒分了!!!!!!   只能看你們說。 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE