Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2653601
  • 博文数量: 416
  • 博客积分: 10220
  • 博客等级: 上将
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 09:47
文章分类

全部博文(416)

文章存档

2022年(1)

2021年(1)

2020年(1)

2019年(5)

2018年(7)

2017年(6)

2016年(7)

2015年(11)

2014年(1)

2012年(5)

2011年(7)

2010年(35)

2009年(64)

2008年(48)

2007年(177)

2006年(40)

我的朋友

分类: C/C++

2006-12-27 17:32:00

int   CListBoxEx::AddString(LPCTSTR   lpszItem)  
  {  
   
            LONG   lStringExtent   =   GetExtentForString(lpszItem);  
            if(GetHorizontalExtent()   <   lStringExtent)  
                  SetHorizontalExtent(lStringExtent);    
   
            return   CListBox::AddString(lpszItem);    
  }  
   
  int   CListBoxEx::DeleteString(   UINT   nIndex   )    
  {  
            int   nCountLeft=CListBox::DeleteString(nIndex);  
            if   (nCountLeft==   LB_ERR)    
                    return   LB_ERR;    
   
              LONG   lMaxExtent=GetExtentForEntireControl();  
              SetHorizontalExtent(lMaxExtent);    
   
              return   nCountLeft;    
  }  
   
  int   CListBoxEx::InsertString(   int   nIndex,   LPCTSTR   lpszItem   )    
  {  
              int   nInsertPos=InsertString(nIndex,   lpszItem);    
              if   (nInsertPos==   LB_ERR)  
                        return   LB_ERR;  
   
              LONG   lStringExtent=GetExtentForString(lpszItem);  
              if(GetHorizontalExtent()   <   lStringExtent)    
                        SetHorizontalExtent(lStringExtent);    
   
              return   nInsertPos;    
  }  
   
  void   CListBoxEx::ResetContent()    
  {  
              SetHorizontalExtent(0);    
              CListBox::ResetContent();   return;    
  }    
   
  int   CListBoxEx::Dir(   UINT   attr,   LPCTSTR   lpszWildCard   )    
  {  
            int   nReturn=Dir(attr,   lpszWildCard   );    
            if   (nReturn==   LB_ERR   ||   nReturn==   LB_ERRSPACE)    
                    return   nReturn;    
   
            LONG   lMaxExtent=GetExtentForEntireControl();  
            SetHorizontalExtent(lMaxExtent);    
            return   nReturn;    
  }  
  LONG   CListBoxEx::GetExtentForString(LPCTSTR   lpszItem)  
  {    
          CDC*   cdc=this->GetDC();  
          CFont*   font   =   this->GetFont();  
          CFont*   pOldFont;  
   
          if   (font)  
            {  
                  pOldFont   =   cdc->SelectObject(font);  
   
                      TEXTMETRIC   tm;  
                      cdc->GetTextMetrics(&tm);  
   
                      CSize   size   =   cdc->GetTextExtent(lpszItem,   lstrlen(lpszItem)   );  
                      size.cx   +=   tm.tmAveCharWidth;  
   
                      cdc->SelectObject(pOldFont);  
                      this->ReleaseDC(cdc);  
   
                      return   (LONG)   size.cx;  
            }  
   
            this->ReleaseDC(cdc);  
   
            return   0L;  
  }  
   
  long   CListBoxEx::GetExtentForEntireControl()  
  {  
  CDC*   cdc   =   this->GetDC();  
  CFont*   font   =   this->GetFont();  
  CFont*   pOldFont;  
  if   (font)  
  {  
  pOldFont   =   cdc->SelectObject(font);  
  TEXTMETRIC   tm;  
  cdc->GetTextMetrics(&tm);  
  CString   sText;  
  LONG   max_cx   =   0;  
   
  for(int   n   =   0;   n  {  
  this->GetText(n,   sText);  
  if   (sText   ==   "")  
  continue;  
  CSize   size   =   cdc->GetTextExtent(sText,   sText.GetLength());  
  size.cx   +=   tm.tmAveCharWidth;      
  if(max_cx   <=   size.cx)  
  max_cx   =   size.cx;                      
  }  
  cdc->SelectObject(pOldFont);  
  this->ReleaseDC(cdc);  
  return   max_cx;            
  }            
  this->ReleaseDC(cdc);            
  return   0L;  
  }
阅读(3097) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~