CString str;
int dx = 0;
CSize sz;
CDC *pDC = m_cmbTest.GetDC();
CFont *pOldFont = pDC->SelectObject(m_cmbTest.GetFont());
for (int i = 0; i < m_cmbTest.GetCount(); i++)
{
m_cmbTest.GetLBText(i, str);
sz = pDC->GetTextExtent(str);
if (sz.cx > dx)
{
dx = sz.cx;
}
}
m_cmbTest.SetDroppedWidth(dx+30);
pDC->SelectObject(pOldFont);
m_cmbTest.ReleaseDC(pDC);
/******************************************/
加30的的原因主要因为下拉列表项多的时候,会出现滚动条,这里预留了滚动条的宽度
当然也可以用api获取滚动条的宽度,具体方法可自己查找