Partager via


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

Voir aussi

Référence

CComboBox, classe

Graphique de la hiérarchie

CComboBox::GetDroppedWidth

CB_SETDROPPEDWIDTH