CComboBox::SetDroppedWidth
Appelez cette fonction pour définir la largeur de minimal autorisé, en pixels, de la zone de liste d'une zone de liste déroulante.
int SetDroppedWidth(
UINT nWidth
);
Paramètres
- nWidth
La largeur de minimal autorisé de la partie zone de liste de la zone de liste déroulante, en pixels.
Valeur de retour
En cas de réussite, la nouvelle largeur de la zone de liste, sinon CB_ERR.
Notes
Cette fonction applique uniquement aux zones de liste déroulante avec le style de CBS_DROPDOWN ou de CBS_DROPDOWNLIST .
Par défaut, la largeur de minimal autorisé de la zone de liste déroulante est 0. Lorsque la partie zone de liste de la zone de liste déroulante s'affiche, sa largeur est la plus importante de la largeur de minimal autorisé ou de la largeur de la zone de liste déroulante.
Exemple
// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC* pDC = m_pComboBox->GetDC();
CFont* pFont = m_pComboBox->GetFont();
// Select the listbox font, save the old font
CFont* pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;
if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);
// Adjust the width for the vertical scroll bar and the left and right border.
dx += ::GetSystemMetrics(SM_CXVSCROLL) + 2*::GetSystemMetrics(SM_CXEDGE);
// Set the width of the list box so that every item is completely visible.
m_pComboBox->SetDroppedWidth(dx);
Configuration requise
Header: afxwin.h