关闭

ComboBox

699人阅读 评论(0) 收藏 举报

一、设置下拉组合框自动适应字符串宽度:

1、重载CComboBox类

2、响应 CBN_DROPDOWN 消息

3、添加如下代码:void CMyComboBox::OnDropdown()
{
 this->RecalcDropWidth();
}

void CMyComboBox::RecalcDropWidth()
{
 int num = this->GetCount();
 int nWidth = 0;
 CString str;
 CClientDC dc(this);

 int nSave = dc.SaveDC();
 dc.SelectObject(GetFont());  //考虑字体与字号变化时的宽度调整
 int nScrollWidth = ::GetSystemMetrics(SM_CXVSCROLL); //下拉框的滚动条的宽度
 for (int i=0;i<num;i++)
 {
  GetLBText(i,str);
  int nLen = dc.GetTextExtent(str).cx+nScrollWidth;
  nWidth = max(nWidth,nLen);
 }

 nWidth += dc.GetTextExtent("0").cx;
 dc.RestoreDC(nSave);
 this->SetDroppedWidth(nWidth);
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:59874次
    • 积分:853
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:14篇
    • 译文:0篇
    • 评论:7条
    最新评论