比如其中一个选项为5个字,
那如何调整Combox长度,来使字刚好显示!

解决方案 »

  1.   

    你说的是宽度还是高度,如果是高度那么你可以用CComboBox::SetWindowPos设置一个很大的cy(高度)值即可,如果是宽度,那么就是说按照CComboBox的项目中最宽的一个显示下拉框的宽度,那么给你一段代码。
    void MachComboBoxWidth(CComboBox *cb)
    {

    CString str;
    CSize   sz;
    int     dx=0;
    CDC*    pDC = cb->GetDC();
    for (int i=0;i < cb->GetCount();i++)
    {
    cb->GetLBText( i, str );
    sz = pDC->GetTextExtent(str);

    if (sz.cx > dx)
    dx = sz.cx;
    }
    cb->ReleaseDC(pDC);
    cb->SetDroppedWidth(dx);
    }
      

  2.   

    找到最长的字符串赋给sLongestName 
    //设置字型组合框的下拉框宽度使其能显示下最长的字型名
    CDC* pDC = GetDC( );
    CSize size = pDC->GetTextExtent( sLongestName );
    m_StyleList.SetDroppedWidth( size.cx );
      

  3.   

    我知道SetDroppedWidth 函数,他是设置下拉选项的宽度的,
    有没有设置Combox控件长度的,比如 开始我默认选中某项,填入Combox
    调整Combox宽度,使其刚好和填入的值相同,问 如何解决?
    谢谢!!
      

  4.   

    你这种需求是谁提出来的?
    MoveWindow成员函数就可以,GetTextExtent取出字符串的长度