La classe CComboBox

Fournit les fonctionnalités d'une zone de liste modifiable Windows.

Syntaxe

class CComboBox : public CWnd

Membres

Constructeurs publics

Nom Description
CComboBox::CComboBox Construit un objet CComboBox.

Méthodes publiques

Nom Description
CComboBox::AddString Ajoute une chaîne à la fin de la liste dans la zone de liste d’une zone de liste modifiable ou à la position triée des zones de liste avec le CBS_SORT style.
CComboBox::Clear Supprime (efface) la sélection actuelle, le cas échéant, dans le contrôle d’édition.
CComboBox::CompareItem Appelé par l’infrastructure pour déterminer la position relative d’un nouvel élément de liste dans une zone de liste modifiable triée dessinée par le propriétaire.
CComboBox::Copy Copie la sélection actuelle, le cas échéant, dans le Presse-papiers au CF_TEXT format.
CComboBox::Create Crée la zone de liste modifiable et l’attache à l’objet CComboBox .
CComboBox::Cut Supprime (coupe) la sélection actuelle, le cas échéant, dans le contrôle d’édition et copie le texte supprimé dans le Presse-papiers au CF_TEXT format.
CComboBox::DeleteItem Appelé par l’infrastructure lorsqu’un élément de liste est supprimé d’une zone de liste modifiable dessinée par le propriétaire.
CComboBox::DeleteString Supprime une chaîne de la zone de liste d’une zone de liste modifiable.
CComboBox::Dir Ajoute une liste de noms de fichiers à la zone de liste d’une zone de liste déroulante.
CComboBox::DrawItem Appelé par l’infrastructure lorsqu’un aspect visuel d’une zone de liste modifiable dessinée par le propriétaire change.
CComboBox::FindString Recherche la première chaîne qui contient le préfixe spécifié dans la zone de liste d’une zone de liste déroulante.
CComboBox::FindStringExact Recherche la première chaîne de zone de liste (dans une zone de liste modifiable) qui correspond à la chaîne spécifiée.
CComboBox::GetComboBoxInfo Récupère des informations sur l’objet CComboBox .
CComboBox::GetCount Récupère le nombre d’éléments dans la zone de liste d’une zone de liste déroulante.
CComboBox::GetCueBanner Obtient le texte d’indicateur affiché pour un contrôle de zone de liste modifiable.
CComboBox::GetCurSel Récupère l’index de l’élément actuellement sélectionné, le cas échéant, dans la zone de liste d’une zone de liste déroulante.
CComboBox::GetDroppedControlRect Récupère les coordonnées de l’écran de la zone de liste visible (déroulante) d’une zone de liste déroulante.
CComboBox::GetDroppedState Détermine si la zone de liste d’une zone de liste déroulante est visible (déroulante).
CComboBox::GetDroppedWidth Récupère la largeur minimale autorisée pour la partie zone de liste déroulante d’une zone de liste modifiable.
CComboBox::GetEditSel Obtient les positions des caractères de début et de fin de la sélection actuelle dans le contrôle d’édition d’une zone de liste modifiable.
CComboBox::GetExtendedUI Détermine si une zone de liste modifiable a l’interface utilisateur par défaut ou l’interface utilisateur étendue.
CComboBox::GetHorizontalExtent Renvoie la largeur en pixels que la partie zone de liste déroulante de la zone de liste modifiable peut faire défiler horizontalement.
CComboBox::GetItemData Récupère la valeur 32 bits fournie par l’application associée à l’élément de zone de liste modifiable spécifié.
CComboBox::GetItemDataPtr Récupère le pointeur 32 bits fourni par l’application associé à l’élément de zone de liste modifiable spécifié.
CComboBox::GetItemHeight Récupère la hauteur des éléments de liste dans une zone de liste modifiable.
CComboBox::GetLBText Obtient une chaîne dans la zone de liste d’une zone de liste modifiable.
CComboBox::GetLBTextLen Obtient la longueur d’une chaîne dans la zone de liste d’une zone de liste déroulante.
CComboBox::GetLocale Récupère l’identificateur des paramètres régionaux d’une zone de liste déroulante.
CComboBox::GetMinVisible Obtient le nombre minimal d’éléments visibles dans la liste déroulante de la zone de liste déroulante actuelle.
CComboBox::GetTopIndex Retourne l’index du premier élément visible dans la partie zone de liste de la zone de liste déroulante.
CComboBox::InitStorage Préalloue des blocs de mémoire pour les éléments et les chaînes dans la partie zone de liste déroulante de la zone de liste modifiable.
CComboBox::InsertString Insère une chaîne dans la zone de liste d’une zone de liste modifiable.
CComboBox::LimitText Limite la longueur du texte que l’utilisateur peut entrer dans le contrôle d’édition d’une zone de liste modifiable.
CComboBox::MeasureItem Appelé par l’infrastructure pour déterminer les dimensions de zone de liste modifiable lorsqu’une zone de liste modifiable dessinée par le propriétaire est créée.
CComboBox::Paste Insère les données du Presse-papiers dans le contrôle d’édition à la position actuelle du curseur. Les données sont insérées uniquement si le Presse-papiers contient des données au CF_TEXT format.
CComboBox::ResetContent Supprime tous les éléments de la zone de liste et modifie le contrôle d’une zone de liste modifiable.
CComboBox::SelectString Recherche une chaîne dans la zone de liste d’une zone de liste modifiable et, si la chaîne est trouvée, sélectionne la chaîne dans la zone de liste et copie la chaîne dans le contrôle d’édition.
CComboBox::SetCueBanner Définit le texte d’indicateur affiché pour un contrôle de zone de liste modifiable.
CComboBox::SetCurSel Sélectionne une chaîne dans la zone de liste d’une zone de liste déroulante.
CComboBox::SetDroppedWidth Définit la largeur minimale autorisée pour la partie zone de liste déroulante d’une zone de liste modifiable.
CComboBox::SetEditSel Sélectionne des caractères dans le contrôle d’édition d’une zone de liste modifiable.
CComboBox::SetExtendedUI Sélectionne l’interface utilisateur par défaut ou l’interface utilisateur étendue d’une zone de liste modifiable qui a le ou CBS_DROPDOWNLIST le CBS_DROPDOWN style.
CComboBox::SetHorizontalExtent Définit la largeur en pixels que la partie zone de liste de la zone de liste modifiable peut faire défiler horizontalement.
CComboBox::SetItemData Définit la valeur 32 bits associée à l’élément spécifié dans une zone de liste déroulante.
CComboBox::SetItemDataPtr Définit le pointeur 32 bits associé à l’élément spécifié dans une zone de liste modifiable.
CComboBox::SetItemHeight Définit la hauteur des éléments de liste dans une zone de liste modifiable ou la hauteur de la partie edit-control (ou static-text) d’une zone de liste modifiable.
CComboBox::SetLocale Définit l’identificateur de paramètres régionaux d’une zone de liste déroulante.
CComboBox::SetMinVisibleItems Définit le nombre minimal d’éléments visibles dans la liste déroulante de la zone de liste déroulante actuelle.
CComboBox::SetTopIndex Indique à la partie zone de liste de la zone de liste déroulante d’afficher l’élément avec l’index spécifié en haut.
CComboBox::ShowDropDown Affiche ou masque la zone de liste d’une zone de liste modifiable qui a le ou CBS_DROPDOWNLIST le CBS_DROPDOWN style.

Notes

Une zone de liste modifiable se compose d’une zone de liste combinée à un contrôle statique ou à un contrôle d’édition. La partie zone de liste du contrôle peut s’afficher à tout moment ou uniquement lorsque l’utilisateur sélectionne la flèche déroulante en regard du contrôle.

L’élément actuellement sélectionné (le cas échéant) dans la zone de liste s’affiche dans le contrôle statique ou de modification. En outre, si la zone de liste déroulante a le style de liste déroulante, l’utilisateur peut taper le caractère initial de l’un des éléments de la liste, et la zone de liste, si visible, met en surbrillance l’élément suivant avec ce caractère initial.

Le tableau suivant compare les trois styles de zone de liste modifiable.

Style Quand la zone de liste est visible Contrôle statique ou de modification
Simple Toujours Modifier
Liste déroulante En cas de suppression Modifier
Drop-down list En cas de suppression statique

Vous pouvez créer un CComboBox objet à partir d’un modèle de dialogue ou directement dans votre code. Dans les deux cas, appelez d’abord le constructeur CComboBox pour construire l’objet CComboBox , puis appelez la Create fonction membre pour créer le contrôle et l’attacher à l’objet CComboBox .

Si vous souhaitez gérer les messages de notification Windows envoyés par une zone de liste déroulante à son parent (généralement une classe dérivée de CDialog), ajoutez une entrée de mappage de messages et une fonction membre de gestionnaire de messages à la classe parente pour chaque message.

Chaque entrée de carte de messages prend la forme suivante :

ON_Notification( id, memberFxn )

id spécifie l’ID de fenêtre enfant du contrôle de zone de liste modifiable qui envoie la notification et memberFxn est le nom de la fonction membre parente que vous avez écrite pour gérer la notification.

Le prototype de fonction parent est le suivant :

afx_msg void memberFxn( );

L’ordre dans lequel certaines notifications seront envoyées ne peut pas être prédite. En particulier, une CBN_SELCHANGE notification peut se produire avant ou après une CBN_CLOSEUP notification.

Les entrées de mappage de messages potentielles sont les suivantes :

  • ON_CBN_CLOSEUP (Windows 3.1 et versions ultérieures.) La zone de liste d’une zone de liste modifiable a été fermée. Ce message de notification n’est pas envoyé pour une zone de liste modifiable qui a le CBS_SIMPLE style.

  • ON_CBN_DBLCLK L’utilisateur double-clique sur une chaîne dans la zone de liste d’une zone de liste déroulante. Ce message de notification est envoyé uniquement pour une zone de liste déroulante avec le CBS_SIMPLE style. Pour une zone de liste déroulante avec le style ou CBS_DROPDOWNLIST le CBS_DROPDOWN style, un double-clic ne peut pas se produire, car un seul clic masque la zone de liste.

  • ON_CBN_DROPDOWN La zone de liste d’une zone de liste déroulante est sur le point d’être déroulante (être rendue visible). Ce message de notification peut se produire uniquement pour une zone de liste modifiable avec le ou CBS_DROPDOWNLIST le CBS_DROPDOWN style.

  • ON_CBN_EDITCHANGE L’utilisateur a effectué une action qui a peut-être modifié le texte dans la partie de contrôle d’édition d’une zone de liste déroulante. Contrairement au CBN_EDITUPDATE message, ce message est envoyé après que Windows met à jour l’écran. Elle n’est pas envoyée si la zone de liste modifiable a le CBS_DROPDOWNLIST style.

  • ON_CBN_EDITUPDATE La partie de contrôle d’édition d’une zone de liste modifiable est sur le point d’afficher du texte modifié. Ce message de notification est envoyé une fois que le contrôle a mis en forme le texte, mais avant d’afficher le texte. Elle n’est pas envoyée si la zone de liste modifiable a le CBS_DROPDOWNLIST style.

  • ON_CBN_ERRSPACE La zone de liste modifiable ne peut pas allouer suffisamment de mémoire pour répondre à une requête spécifique.

  • ON_CBN_SELENDCANCEL (Windows 3.1 et versions ultérieures.) Indique que la sélection de l’utilisateur doit être annulée. L’utilisateur clique sur un élément, puis clique sur une autre fenêtre ou contrôle pour masquer la zone de liste déroulante d’une zone de liste modifiable. Ce message de notification est envoyé avant le CBN_CLOSEUP message de notification pour indiquer que la sélection de l’utilisateur doit être ignorée. CBN_SELENDOK Le CBN_SELENDCANCEL ou le message de notification est envoyé même si le CBN_CLOSEUP message de notification n’est pas envoyé (comme dans le cas d’une zone de liste modifiable avec le CBS_SIMPLE style).

  • ON_CBN_SELENDOK L’utilisateur sélectionne un élément, puis appuie sur la touche Entrée ou clique sur la touche Flèche bas pour masquer la zone de liste d’une zone de liste modifiable. Ce message de notification est envoyé avant le CBN_CLOSEUP message pour indiquer que la sélection de l’utilisateur doit être considérée comme valide. CBN_SELENDOK Le CBN_SELENDCANCEL ou le message de notification est envoyé même si le CBN_CLOSEUP message de notification n’est pas envoyé (comme dans le cas d’une zone de liste modifiable avec le CBS_SIMPLE style).

  • ON_CBN_KILLFOCUS La zone de liste modifiable perd le focus d’entrée.

  • ON_CBN_SELCHANGE La sélection dans la zone de liste d’une zone de liste modifiable est sur le point d’être modifiée en raison du fait que l’utilisateur clique dans la zone de liste ou modifie la sélection à l’aide des touches de direction. Lors du traitement de ce message, le texte dans le contrôle d’édition de la zone de liste modifiable ne peut être récupéré qu’à l’aide GetLBText d’une autre fonction similaire ou via une autre fonction similaire. GetWindowText ne peut pas être utilisé.

  • ON_CBN_SETFOCUS La zone de liste modifiable reçoit le focus d’entrée.

Si vous créez un CComboBox objet dans une boîte de dialogue (via une ressource de boîte de dialogue), l’objet CComboBox est automatiquement détruit lorsque l’utilisateur ferme la boîte de dialogue.

Si vous incorporez un objet dans un CComboBox autre objet fenêtre, vous n’avez pas besoin de le détruire. Si vous créez l’objet CComboBox sur la pile, il est détruit automatiquement. Si vous créez l’objet CComboBox sur le tas à l’aide de la new fonction, vous devez appeler delete l’objet pour le détruire lorsque la zone de liste modifiable Windows est détruite.

Notez que si vous souhaitez gérer WM_KEYDOWN et WM_CHAR messages, vous devez sous-classer les contrôles de zone de liste modifiable et de zone de liste modifiable, dériver des classes et CEditCListBoxajouter des gestionnaires pour ces messages aux classes dérivées. Pour plus d’informations, consultez CWnd::SubclassWindow.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CComboBox

Spécifications

En-têteafxwin.h:

CComboBox::AddString

Ajoute une chaîne à la zone de liste d’une zone de liste modifiable.

int AddString(LPCTSTR lpszString);

Paramètres

lpszString
Pointe vers la chaîne terminée par null à ajouter.

Valeur de retour

Si la valeur de retour est supérieure ou égale à 0, il s’agit de l’index de base zéro de la chaîne dans la zone de liste. La valeur de retour est CB_ERR si une erreur se produit ; la valeur de retour est CB_ERRSPACE si un espace insuffisant est disponible pour stocker la nouvelle chaîne.

Notes

Si la zone de liste n’a pas été créée avec le CBS_SORT style, la chaîne est ajoutée à la fin de la liste. Sinon, la chaîne est insérée dans la liste et la liste est triée.

Remarque

Cette fonction n’est pas prise en charge par le contrôle Windows ComboBoxEx . Pour plus d’informations sur ce contrôle, consultez ComboBoxEx Contrôles dans le Kit de développement logiciel (SDK) Windows.

Pour insérer une chaîne dans un emplacement spécifique dans la liste, utilisez la InsertString fonction membre.

Exemple

// Add 20 items to the combo box.
CString str;
for (int i = 0; i < 20; i++)
{
   str.Format(_T("item string %d"), i);
   m_pComboBox->AddString(str);
}

CComboBox::CComboBox

Construit un objet CComboBox.

CComboBox();

Exemple

// Declare a local CComboBox object.
CComboBox myComboBox;

// Declare a dynamic CComboBox object.
CComboBox *pmyComboBox = new CComboBox;

CComboBox::Clear

Supprime (efface) la sélection actuelle, le cas échéant, dans le contrôle d’édition de la zone de liste modifiable.

void Clear();

Notes

Pour supprimer la sélection actuelle et placer le contenu supprimé dans le Presse-papiers, utilisez la Cut fonction membre.

Exemple

// Delete all of the text from the combo box's edit control.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Clear();

CComboBox::CompareItem

Appelé par l’infrastructure pour déterminer la position relative d’un nouvel élément dans la partie zone de liste d’une zone de liste modifiable triée de dessin propriétaire.

virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);

Paramètres

lpCompareItemStruct
Pointeur long vers une COMPAREITEMSTRUCT structure.

Valeur de retour

Indique la position relative des deux éléments décrits dans la COMPAREITEMSTRUCT structure. Il peut s’agir de l’une des valeurs suivantes :

Value Signification
- 1 L’élément 1 trie avant l’élément 2.
0 L’élément 1 et l’élément 2 trient de la même façon.
1 L’élément 1 trie après l’élément 2.

Pour CWnd::OnCompareItem obtenir une description de COMPAREITEMSTRUCT.

Notes

Par défaut, cette fonction membre ne fait rien. Si vous créez une zone de liste modifiable de dessin propriétaire avec le LBS_SORT style, vous devez remplacer cette fonction membre pour aider l’infrastructure à trier les nouveaux éléments ajoutés à la zone de liste.

Exemple

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example compares two items using strcmp to sort items in reverse
// alphabetical order. The combo box control was created with the
// following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
int CMyComboBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
   int iComp = 0;
   ASSERT(lpCompareItemStruct->CtlType == ODT_COMBOBOX);
   LPCTSTR lpszText1 = (LPCTSTR)lpCompareItemStruct->itemData1;
   ASSERT(lpszText1 != NULL);
   LPCTSTR lpszText2 = (LPCTSTR)lpCompareItemStruct->itemData2;
   ASSERT(lpszText2 != NULL);

   if (NULL != lpszText1 && NULL != lpszText2)
   {
      iComp = _tcscmp(lpszText2, lpszText1);
   }

   return iComp;
}

CComboBox::Copy

Copie la sélection actuelle, le cas échéant, dans le contrôle d’édition de la zone de liste modifiable dans le Presse-papiers au CF_TEXT format.

void Copy();

Exemple

// Copy all of the text from the combo box's edit control
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Copy();

CComboBox::Create

Crée la zone de liste modifiable et l’attache à l’objet CComboBox .

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Paramètres

dwStyle
Spécifie le style de la zone de liste modifiable. Appliquez n’importe quelle combinaison de styles de zone de liste modifiable à la zone.

rect
Pointe vers la position et la taille de la zone de liste modifiable. Il peut s’agir d’une RECT structure ou d’un CRect objet.

pParentWnd
Spécifie la fenêtre parente de la zone de liste modifiable (généralement a CDialog). Il ne doit pas être NULL.

nID
Spécifie l’ID de contrôle de la zone de liste modifiable.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Vous construisez un CComboBox objet en deux étapes. Tout d’abord, appelez le constructeur, puis appelez Create, qui crée la zone de liste modifiable Windows et l’attache à l’objet CComboBox .

Quand Create il s’exécute, Windows envoie les WM_NCCREATEmessages , et WM_CREATEWM_NCCALCSIZEWM_GETMINMAXINFO les messages à la zone de liste déroulante.

Ces messages sont gérés par défaut par les OnNcCreatefonctions membres et OnNcCalcSizeOnGetMinMaxInfo , OnCreatepar défaut, dans la classe de CWnd base. Pour étendre la gestion des messages par défaut, dérivez une classe de CComboBox, ajoutez un mappage de messages à la nouvelle classe et remplacez les fonctions membres du gestionnaire de messages précédentes. Remplacez OnCreate, par exemple, l’initialisation nécessaire pour une nouvelle classe.

Appliquez les styles de fenêtre suivants à un contrôle de zone de liste modifiable. :

  • WS_CHILD Toujours

  • WS_VISIBLE Généralement

  • WS_DISABLED Rarement

  • WS_VSCROLL Pour ajouter un défilement vertical pour la zone de liste déroulante dans la zone de liste déroulante

  • WS_HSCROLL Pour ajouter un défilement horizontal pour la zone de liste déroulante dans la zone de liste déroulante

  • WS_GROUP Pour regrouper les contrôles

  • WS_TABSTOP Pour inclure la zone de liste déroulante dans l’ordre de tabulation

Exemple

m_pComboBox->Create(
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST,
    CRect(10, 10, 200, 100), pParentWnd, 1);

CComboBox::Cut

Supprime (coupe) la sélection actuelle, le cas échéant, dans le contrôle d’édition de zone de liste modifiable et copie le texte supprimé dans le Presse-papiers au CF_TEXT format.

void Cut();

Notes

Pour supprimer la sélection actuelle sans placer le texte supprimé dans le Presse-papiers, appelez la Clear fonction membre.

Exemple

// Delete all of the text from the combo box's edit control and copy it
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Cut();

CComboBox::DeleteItem

Appelé par l’infrastructure lorsque l’utilisateur supprime un élément d’un objet de dessin CComboBox propriétaire ou détruit la zone de liste déroulante.

virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);

Paramètres

lpDeleteItemStruct
Pointeur long vers une structure Windows DELETEITEMSTRUCT qui contient des informations sur l’élément supprimé. Consultez CWnd::OnDeleteItem une description de cette structure.

Notes

L’implémentation par défaut de cette fonction est sans effet. Remplacez cette fonction pour redessiner la zone de liste modifiable si nécessaire.

Exemple

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example simply dumps the item's text. The combo box control was
// created with the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
   ASSERT(lpDeleteItemStruct->CtlType == ODT_COMBOBOX);
   LPTSTR lpszText = (LPTSTR)lpDeleteItemStruct->itemData;
   ASSERT(lpszText != NULL);

   AFXDUMP(lpszText);
}

CComboBox::DeleteString

Supprime l’élément en position nIndex de la zone de liste déroulante.

int DeleteString(UINT nIndex);

Paramètres

nIndex
Spécifie l’index de la chaîne à supprimer.

Valeur de retour

Si la valeur de retour est supérieure ou égale à 0, il s’agit d’un nombre de chaînes restantes dans la liste. La valeur de retour est CB_ERR si nIndex spécifie un index supérieur au nombre d’éléments de la liste.

Notes

Tous les éléments suivants nIndex se déplacent maintenant vers le bas d’une position. Par exemple, si une zone de liste modifiable contient deux éléments, la suppression du premier élément entraîne la première position de l’élément restant. nIndex=0 pour l’élément à la première position.

Exemple

// Delete every item from the combo box.
for (int i = m_pComboBox->GetCount() - 1; i >= 0; i--)
{
   m_pComboBox->DeleteString(i);
}

CComboBox::Dir

Ajoute une liste de noms de fichiers ou de lecteurs à la zone de liste d’une zone de liste modifiable.

int Dir(
    UINT attr,
    LPCTSTR lpszWildCard);

Paramètres

attr
Il peut s’agir de n’importe quelle combinaison des enum valeurs décrites dans CFile::GetStatus ou de n’importe quelle combinaison des valeurs suivantes :

  • DDL_READWRITE Le fichier peut être lu ou écrit dans.

  • DDL_READONLY Le fichier peut être lu à partir de, mais pas écrit dans.

  • DDL_HIDDEN Le fichier est masqué et n’apparaît pas dans une liste de répertoires.

  • DDL_SYSTEM Le fichier est un fichier système.

  • DDL_DIRECTORY Nom spécifié par lpszWildCard un répertoire.

  • DDL_ARCHIVE Le fichier a été archivé.

  • DDL_DRIVES Incluez tous les lecteurs qui correspondent au nom spécifié par lpszWildCard.

  • DDL_EXCLUSIVE Indicateur exclusif. Si l’indicateur exclusif est défini, seuls les fichiers du type spécifié sont répertoriés. Dans le cas contraire, les fichiers du type spécifié sont répertoriés en plus des fichiers « normaux ».

lpszWildCard
Pointe vers une chaîne de spécification de fichier. La chaîne peut contenir des caractères génériques carte (par exemple, *.*).

Valeur de retour

Si la valeur de retour est supérieure ou égale à 0, il s’agit de l’index de base zéro du dernier nom de fichier ajouté à la liste. La valeur de retour est CB_ERR si une erreur se produit ; la valeur de retour est CB_ERRSPACE si un espace insuffisant est disponible pour stocker les nouvelles chaînes.

Notes

Cette fonction n’est pas prise en charge par le contrôle Windows ComboBoxEx . Pour plus d’informations sur ce contrôle, consultez ComboBoxEx Contrôles dans le Kit de développement logiciel (SDK) Windows.

Exemple

// Add all the files and directories in the windows directory.
TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH];
VERIFY(0 < ::GetWindowsDirectory(lpszWinPath, MAX_PATH));

// Make the windows directory the current directory.
::GetCurrentDirectory(MAX_PATH, lpszOldPath);
::SetCurrentDirectory(lpszWinPath);

m_pComboBox->ResetContent();
m_pComboBox->Dir(DDL_READWRITE | DDL_DIRECTORY, _T("*.*"));

// Reset the current directory to its previous path.
::SetCurrentDirectory(lpszOldPath);

CComboBox::DrawItem

Appelé par l’infrastructure lorsqu’un aspect visuel d’une zone de liste modifiable de dessin propriétaire change.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Paramètres

lpDrawItemStruct
Pointeur vers une DRAWITEMSTRUCT structure qui contient des informations sur le type de dessin requis.

Notes

Le itemAction membre de la DRAWITEMSTRUCT structure définit l’action de dessin à effectuer. Consultez CWnd::OnDrawItem une description de cette structure.

Par défaut, cette fonction membre ne fait rien. Remplacez cette fonction membre pour implémenter le dessin pour un objet de dessin CComboBox propriétaire. Avant que cette fonction membre ne se termine, l’application doit restaurer tous les objets GDI (Graphics Device Interface) sélectionnés pour le contexte d’affichage fourni dans lpDrawItemStruct.

Exemple

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example draws an item's text centered vertically and horizontally. The
// combo box control was created with the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
   ASSERT(lpDrawItemStruct->CtlType == ODT_COMBOBOX);
   LPCTSTR lpszText = (LPCTSTR)lpDrawItemStruct->itemData;
   ASSERT(lpszText != NULL);
   CDC dc;

   dc.Attach(lpDrawItemStruct->hDC);

   // Save these value to restore them when done drawing.
   COLORREF crOldTextColor = dc.GetTextColor();
   COLORREF crOldBkColor = dc.GetBkColor();

   // If this item is selected, set the background color
   // and the text color to appropriate values. Erase
   // the rect by filling it with the background color.
   if ((lpDrawItemStruct->itemAction & ODA_SELECT) &&
       (lpDrawItemStruct->itemState & ODS_SELECTED))
   {
      dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
      dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
      dc.FillSolidRect(&lpDrawItemStruct->rcItem, ::GetSysColor(COLOR_HIGHLIGHT));
   }
   else
   {
      dc.FillSolidRect(&lpDrawItemStruct->rcItem, crOldBkColor);
   }

   // Draw the text.
   dc.DrawText(
       lpszText,
       (int)_tcslen(lpszText),
       &lpDrawItemStruct->rcItem,
       DT_CENTER | DT_SINGLELINE | DT_VCENTER);

   // Reset the background color and the text color back to their
   // original values.
   dc.SetTextColor(crOldTextColor);
   dc.SetBkColor(crOldBkColor);

   dc.Detach();
}

CComboBox::FindString

Recherche, mais ne sélectionne pas, la première chaîne qui contient le préfixe spécifié dans la zone de liste d’une zone de liste déroulante.

int FindString(
    int nStartAfter,
    LPCTSTR lpszString) const;

Paramètres

nStartAfter
Contient l’index de base zéro de l’élément avant le premier élément à rechercher. Lorsque la recherche atteint le bas de la zone de liste, elle passe du haut de la zone de liste à l’élément spécifié par nStartAfter. Si -1, la zone de liste entière est recherchée à partir du début.

lpszString
Pointe vers la chaîne terminée par null qui contient le préfixe à rechercher. La recherche est indépendante de la casse. Cette chaîne peut donc contenir n’importe quelle combinaison de lettres majuscules et minuscules.

Valeur de retour

Si la valeur de retour est supérieure ou égale à 0, il s’agit de l’index de base zéro de l’élément correspondant. C’est CB_ERR si la recherche a échoué.

Notes

Cette fonction n’est pas prise en charge par le contrôle Windows ComboBoxEx . Pour plus d’informations sur ce contrôle, consultez ComboBoxEx Contrôles dans le Kit de développement logiciel (SDK) Windows.

Exemple

// The string to match.
LPCTSTR lpszmyString = _T("item");

// Delete all items that begin with the specified string.
int nItem = 0;
while ((nItem = m_pComboBox->FindString(nItem, lpszmyString)) != CB_ERR)
{
   m_pComboBox->DeleteString(nItem);
}

CComboBox::FindStringExact

Appelez la FindStringExact fonction membre pour rechercher la première chaîne de zone de liste (dans une zone de liste modifiable) qui correspond à la chaîne spécifiée dans lpszFind.

int FindStringExact(
    int nIndexStart,
    LPCTSTR lpszFind) const;

Paramètres

nIndexStart
Spécifie l’index de base zéro de l’élément avant que le premier élément soit recherché. Lorsque la recherche atteint le bas de la zone de liste, elle passe du haut de la zone de liste à l’élément spécifié par nIndexStart. Si nIndexStart la valeur est -1, la zone de liste entière est recherchée à partir du début.

lpszFind
Pointe vers la chaîne terminée par null pour rechercher. Cette chaîne peut contenir un nom de fichier complet, y compris l’extension. La recherche n’est pas sensible à la casse. Cette chaîne peut donc contenir n’importe quelle combinaison de lettres majuscules et minuscules.

Valeur de retour

Index de base zéro de l’élément correspondant, ou CB_ERR si la recherche a échoué.

Notes

Si la zone de liste modifiable a été créée avec un style de dessin propriétaire, mais sans le CBS_HASSTRINGS style, FindStringExact tente de mettre en correspondance la valeur doubleword par rapport à la valeur de lpszFind.

Exemple

// The string to match.
LPCTSTR lpszmyExactString = _T("item 5");

// Delete all items that exactly match the specified string.
int nDex = 0;
while ((nDex = m_pComboBox->FindStringExact(nDex, lpszmyExactString)) != CB_ERR)
{
   m_pComboBox->DeleteString(nDex);
}

CComboBox::GetComboBoxInfo

Récupère des informations pour l’objet CComboBox .

BOOL GetComboBoxInfo(PCOMBOBOXINFO pcbi) const;

Paramètres

*pcbi*<br/> A pointer to the [CO Mo OBOXINFO'](/windows/win32/api/winuser/ns-winuser-comboboxinfo) structure.

Valeur de retour

Retourne TRUE en cas de réussite, FALSE en cas d’échec.

Notes

Cette fonction membre émule les fonctionnalités du CB_GETCOMBOBOXINFO message, comme décrit dans le Kit de développement logiciel (SDK) Windows.

CComboBox::GetCount

Appelez cette fonction membre pour récupérer le nombre d’éléments dans la partie zone de liste d’une zone de liste modifiable.

int GetCount() const;

Valeur de retour

Nombre d’éléments. Le nombre retourné est supérieur à la valeur d’index du dernier élément (l’index est de base zéro). C’est CB_ERR si une erreur se produit.

Exemple

// Add 10 items to the combo box.
CString strItem;
for (int i = 0; i < 10; i++)
{
   strItem.Format(_T("item %d"), i);
   m_pComboBox->AddString(strItem);
}

// Verify the 10 items were added to the combo box.
ASSERT(m_pComboBox->GetCount() == 10);

CComboBox::GetCueBanner

Obtient le texte d’indicateur affiché pour un contrôle de zone de liste modifiable.

CString GetCueBanner() const;

BOOL GetCueBanner(
    LPTSTR lpszText,
    int cchText) const;

Paramètres

lpszText
[out] Pointeur vers une mémoire tampon qui reçoit le texte de la bannière d’indicateur.

cchText
[in] Taille de la mémoire tampon vers laquelle pointe le lpszText paramètre.

Valeur de retour

Dans la première surcharge, objet CString qui contient le texte de la bannière d’indicateur s’il existe ; sinon, objet CString dont la longueur est nulle.

-ou-

Dans la deuxième surcharge, TRUE si cette méthode réussit ; sinon, FALSE.

Notes

Le texte cue est une invite qui s’affiche dans la zone d’entrée du contrôle de zone de liste modifiable. Le texte de l’indicateur s’affiche jusqu’à ce que l’utilisateur fournisse une entrée.

Cette méthode envoie le CB_GETCUEBANNER message, qui est décrit dans le Kit de développement logiciel (SDK) Windows.

CComboBox::GetCurSel

Appelez cette fonction membre pour déterminer quel élément de la zone de liste modifiable est sélectionné.

int GetCurSel() const;

Valeur de retour

Index de base zéro de l’élément actuellement sélectionné dans la zone de liste d’une zone de liste déroulante, ou CB_ERR si aucun élément n’est sélectionné.

Notes

GetCurSel retourne un index dans la liste.

Exemple

// Select the next item of the currently selected item
// in the combo box.
int nIndex = m_pComboBox->GetCurSel();
int nCount = m_pComboBox->GetCount();
if ((nIndex != CB_ERR) && (nCount > 1))
{
   if (++nIndex < nCount)
      m_pComboBox->SetCurSel(nIndex);
   else
      m_pComboBox->SetCurSel(0);
}

CComboBox::GetDroppedControlRect

Appelez la GetDroppedControlRect fonction membre pour récupérer les coordonnées d’écran de la zone de liste visible (déroulante) d’une zone de liste déroulante.

void GetDroppedControlRect(LPRECT lprect) const;

Paramètres

lprect
Pointe vers la structure RECT qui doit recevoir les coordonnées.

Exemple

// This example move a combo box so that the upper left
// corner of the combo box is at a specific point.

// The point to move the combo box to.
CPoint myPoint(30, 10);

CRect r;

m_pComboBox->GetDroppedControlRect(&r);

m_pComboBox->GetParent()->ScreenToClient(&r);
r.OffsetRect(myPoint - r.TopLeft());
m_pComboBox->MoveWindow(&r);

CComboBox::GetDroppedState

Appelez la GetDroppedState fonction membre pour déterminer si la zone de liste d’une zone de liste déroulante est visible (déroulante).

BOOL GetDroppedState() const;

Valeur de retour

Différent de zéro si la zone de liste est visible ; sinon 0.

Exemple

// Show the dropdown list box if it is not already dropped.
if (!m_pComboBox->GetDroppedState())
   m_pComboBox->ShowDropDown(TRUE);

CComboBox::GetDroppedWidth

Appelez cette fonction pour récupérer la largeur minimale autorisée, en pixels, de la zone de liste d’une zone de liste déroulante.

int GetDroppedWidth() const;

Valeur de retour

Si elle réussit, la largeur minimale autorisée, en pixels ; sinon, CB_ERR.

Notes

Cette fonction s’applique uniquement aux zones de liste modifiable avec le ou CBS_DROPDOWNLIST le CBS_DROPDOWN style.

Par défaut, la largeur minimale autorisée de la zone de liste déroulante est 0. La largeur minimale autorisée peut être définie en appelant SetDroppedWidth. Lorsque la partie zone de liste de la zone de liste modifiable est affichée, sa largeur est supérieure à la largeur minimale autorisée ou à la largeur de zone de liste modifiable.

Exemple

Consultez l’exemple pour SetDroppedWidth.

CComboBox::GetEditSel

Obtient les positions des caractères de début et de fin de la sélection actuelle dans le contrôle d’édition d’une zone de liste modifiable.

DWORD GetEditSel() const;

Valeur de retour

Valeur 32 bits qui contient la position de départ dans le mot de bas ordre et la position du premier caractère non sélectionné après la fin de la sélection dans le mot de classement élevé. Si cette fonction est utilisée dans une zone de liste modifiable sans contrôle d’édition, CB_ERR elle est retournée.

Exemple

DWORD dwSel;

// Set the selection to be all characters after the current selection.
if ((dwSel = m_MyComboBox.GetEditSel()) != CB_ERR)
{
   m_MyComboBox.SetEditSel(HIWORD(dwSel), -1);
}

CComboBox::GetExtendedUI

Appelez la GetExtendedUI fonction membre pour déterminer si une zone de liste modifiable a l’interface utilisateur par défaut ou l’interface utilisateur étendue.

BOOL GetExtendedUI() const;

Valeur de retour

Différent de zéro si la zone de liste modifiable a l’interface utilisateur étendue ; sinon 0.

Notes

L’interface utilisateur étendue peut être identifiée de la manière suivante :

  • Le fait de cliquer sur le contrôle statique affiche la zone de liste uniquement pour les zones de liste déroulante avec le CBS_DROPDOWNLIST style.

  • Appuyez sur la touche Flèche bas pour afficher la zone de liste (F4 est désactivée).

Le défilement dans le contrôle statique est désactivé lorsque la liste d’éléments n’est pas visible (les touches de direction sont désactivées).

Exemple

// Use the extended UI if it is not already set.
if (!m_pComboBox->GetExtendedUI())
   m_pComboBox->SetExtendedUI(TRUE);

CComboBox::GetHorizontalExtent

Récupère à partir de la zone de liste déroulante la largeur en pixels par laquelle la partie zone de liste de la zone de liste modifiable peut faire défiler horizontalement.

UINT GetHorizontalExtent() const;

Valeur de retour

Largeur défilable de la partie zone de liste déroulante de la zone de liste modifiable, en pixels.

Notes

Cela s’applique uniquement si la partie zone de liste de la zone de liste modifiable a une barre de défilement horizontale.

Exemple

// Find the longest string in the combo box.
CString strText;
CSize sz;
UINT dxText = 0;
CDC *pDCCombo = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, strText);
   sz = pDCCombo->GetTextExtent(strText);

   if (sz.cx > (LONG)dxText)
      dxText = sz.cx;
}
m_pComboBox->ReleaseDC(pDCCombo);

// Set the horizontal extent only if the current extent is not large enough.
if (m_pComboBox->GetHorizontalExtent() < dxText)
{
   m_pComboBox->SetHorizontalExtent(dxText);
   ASSERT(m_pComboBox->GetHorizontalExtent() == dxText);
}

CComboBox::GetItemData

Récupère la valeur 32 bits fournie par l’application associée à l’élément de zone de liste modifiable spécifié.

DWORD_PTR GetItemData(int nIndex) const;

Paramètres

nIndex
Contient l’index de base zéro d’un élément dans la zone de liste déroulante de la zone de liste déroulante.

Valeur de retour

Valeur 32 bits associée à l’élément, ou CB_ERR si une erreur se produit.

Notes

La valeur 32 bits peut être définie avec le dwItemData paramètre d’un SetItemData appel de fonction membre. Utilisez la GetItemDataPtr fonction membre si la valeur 32 bits à récupérer est un pointeur (void*).

Exemple

// If any item's data is equal to zero then reset it to -1.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   if (m_pComboBox->GetItemData(i) == 0)
   {
      m_pComboBox->SetItemData(i, (DWORD)-1);
   }
}

CComboBox::GetItemDataPtr

Récupère la valeur 32 bits fournie par l’application associée à l’élément de zone de liste modifiable spécifié en tant que pointeur (void*).

void* GetItemDataPtr(int nIndex) const;

Paramètres

nIndex
Contient l’index de base zéro d’un élément dans la zone de liste déroulante de la zone de liste déroulante.

Valeur de retour

Récupère un pointeur ou -1 si une erreur se produit.

Exemple

LPVOID lpmyPtr = m_pComboBox->GetItemDataPtr(5);

// Check all the items in the combo box; if an item's
// data pointer is equal to my pointer then reset it to NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   if (m_pComboBox->GetItemDataPtr(i) == lpmyPtr)
   {
      m_pComboBox->SetItemDataPtr(i, NULL);
   }
}

CComboBox::GetItemHeight

Appelez la GetItemHeight fonction membre pour récupérer la hauteur des éléments de liste dans une zone de liste modifiable.

int GetItemHeight(int nIndex) const;

Paramètres

nIndex
Spécifie le composant de la zone de liste modifiable dont la hauteur doit être récupérée. Si le nIndex paramètre est -1, la hauteur de la partie edit-control (ou static-text) de la zone de liste déroulante est récupérée. Si la zone de liste modifiable a le CBS_OWNERDRAWVARIABLE style, nIndex spécifie l’index de base zéro de l’élément de liste dont la hauteur doit être récupérée. Sinon, nIndex la valeur 0 doit être définie sur 0.

Valeur de retour

Hauteur, en pixels, de l’élément spécifié dans une zone de liste déroulante. La valeur de retour est CB_ERR si une erreur se produit.

Exemple

// Set the height of every item so the item
// is completely visible.
CString strLBText;
CSize size;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, strLBText);
   size = pDC->GetTextExtent(strLBText);

   // Only want to set the item height if the current height
   // is not big enough.
   if (m_pComboBox->GetItemHeight(i) < size.cy)
      m_pComboBox->SetItemHeight(i, size.cy);
}
m_pComboBox->ReleaseDC(pDC);

CComboBox::GetLBText

Obtient une chaîne dans la zone de liste d’une zone de liste modifiable.

int GetLBText(
    int nIndex,
    LPTSTR lpszText) const;

void GetLBText(
    int nIndex,
    CString& rString) const;

Paramètres

nIndex
Contient l’index de base zéro de la chaîne de zone de liste à copier.

lpszText
Pointe vers une mémoire tampon qui doit recevoir la chaîne. La mémoire tampon doit avoir suffisamment d’espace pour la chaîne et un caractère null de fin.

rString
Référence à un CString.

Valeur de retour

Longueur (en octets) de la chaîne, à l’exclusion du caractère null de fin. Si nIndex elle ne spécifie pas d’index valide, la valeur de retour est CB_ERR.

Notes

La deuxième forme de cette fonction membre remplit un CString objet avec le texte de l’élément.
Si nIndex elle n’est pas valide, cette fonction lève une E_INVALIDARG exception (code d’erreur : -2147024809, 0x80070057).

Exemple

// Dump all of the items in the combo box.
CString str1, str2;
int n;
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   n = m_pComboBox->GetLBTextLen(i);
   m_pComboBox->GetLBText(i, str1.GetBuffer(n));
   str1.ReleaseBuffer();

   str2.Format(_T("item %d: %s\r\n"), i, str1.GetBuffer(0));
   AFXDUMP(str2);
}

CComboBox::GetLBTextLen

Obtient la longueur d’une chaîne dans la zone de liste d’une zone de liste déroulante.

int GetLBTextLen(int nIndex) const;

Paramètres

nIndex
Contient l’index de base zéro de la chaîne de zone de liste.

Valeur de retour

Longueur de la chaîne en octets, à l’exclusion du caractère null de fin. Si nIndex elle ne spécifie pas d’index valide, la valeur de retour est CB_ERR.

Exemple

Consultez l’exemple pour CComboBox::GetLBText.

CComboBox::GetLocale

Récupère les paramètres régionaux utilisés par la zone de liste déroulante.

LCID GetLocale() const;

Valeur de retour

Valeur de l’identificateur de paramètres régionaux (LCID) pour les chaînes dans la zone de liste déroulante.

Notes

Les paramètres régionaux sont utilisés, par exemple, pour déterminer l’ordre de tri des chaînes dans une zone de liste modifiable triée.

Exemple

Consultez l’exemple pour CComboBox::SetLocale.

CComboBox::GetMinVisible

Obtient le nombre minimal d’éléments visibles dans la liste déroulante du contrôle de zone de liste déroulante actuel.

int GetMinVisible() const;

Valeur de retour

Nombre minimal d’éléments visibles dans la liste déroulante actuelle.

Notes

Cette méthode envoie le CB_GETMINVISIBLE message, qui est décrit dans le Kit de développement logiciel (SDK) Windows.

CComboBox::GetTopIndex

Récupère l’index de base zéro du premier élément visible dans la partie zone de liste de la zone de liste déroulante.

int GetTopIndex() const;

Valeur de retour

Index de base zéro du premier élément visible dans la partie zone de liste de la zone de liste déroulante en cas de réussite, CB_ERR sinon.

Notes

Initialement, l’élément 0 se trouve en haut de la zone de liste, mais si la zone de liste est défiler, un autre élément peut se trouver en haut.

Exemple

// Want an item in the bottom half to be the first visible item.
int nTop = m_pComboBox->GetCount() / 2;
if (m_pComboBox->GetTopIndex() < nTop)
{
   m_pComboBox->SetTopIndex(nTop);
   ASSERT(m_pComboBox->GetTopIndex() == nTop);
}

CComboBox::InitStorage

Alloue de la mémoire pour stocker les éléments de zone de liste dans la partie zone de liste de la zone de liste déroulante.

int InitStorage(
    int nItems,
    UINT nBytes);

Paramètres

nItems
Spécifie le nombre d’éléments à ajouter.

nBytes
Spécifie la quantité de mémoire, en octets, à allouer pour les chaînes d’élément.

Valeur de retour

Si elle réussit, le nombre maximal d’éléments que la partie zone de liste déroulante de la zone de liste modifiable peut stocker avant qu’une réaffectation de mémoire soit nécessaire, sinon, ce CB_ERRSPACEqui signifie que la mémoire n’est pas suffisante.

Notes

Appelez cette fonction avant d’ajouter un grand nombre d’éléments à la partie zone de liste du CComboBox.

Windows 95/98 uniquement : le wParam paramètre est limité à des valeurs 16 bits. Cela signifie que les zones de liste ne peuvent pas contenir plus de 32 767 éléments. Bien que le nombre d’éléments soit limité, la taille totale des éléments d’une zone de liste est limitée uniquement par la mémoire disponible.

Cette fonction permet d’accélérer l’initialisation des zones de liste qui ont un grand nombre d’éléments (plus de 100). Il prélocalise la quantité de mémoire spécifiée afin que les fonctions suivantes AddStringInsertStringDir prennent le plus court temps possible. Vous pouvez utiliser des estimations pour les paramètres. Si vous dépassez la mémoire, une mémoire supplémentaire est allouée ; si vous sous-estimez, l’allocation normale est utilisée pour les éléments qui dépassent le montant préalloué.

Exemple

// Initialize the storage of the combo box to be 256 strings with
// about 10 characters per string, performance improvement.
int nAlloc = pmyComboBox->InitStorage(256, 10);
ASSERT(nAlloc != CB_ERRSPACE);

// Add 256 items to the combo box.
CString strAdd;
for (int i = 0; i < 256; i++)
{
   strAdd.Format(_T("item string %d"), i);
   m_pComboBox->AddString(strAdd);
}

CComboBox::InsertString

Insère une chaîne dans la zone de liste d’une zone de liste modifiable.

int InsertString(
    int nIndex,
    LPCTSTR lpszString);

Paramètres

nIndex
Contient l’index de base zéro de la position dans la zone de liste qui doit recevoir la chaîne. Si ce paramètre est -1, la chaîne est ajoutée à la fin de la liste.

lpszString
Pointe vers la chaîne terminée par le caractère null qui doit être insérée.

Valeur de retour

Index de base zéro de la position à laquelle la chaîne a été insérée. La valeur de retour est CB_ERR si une erreur se produit. La valeur de retour est CB_ERRSPACE si un espace insuffisant est disponible pour stocker la nouvelle chaîne.

Notes

Contrairement à la AddString fonction membre, la InsertString fonction membre n’entraîne pas le tri d’une liste avec le CBS_SORT style.

Remarque

Cette fonction n’est pas prise en charge par le contrôle Windows ComboBoxEx . Pour plus d’informations sur ce contrôle, consultez ComboBoxEx Contrôles dans le Kit de développement logiciel (SDK) Windows.

Exemple

// Insert items in between existing items.
CString strIns;
int nItems = m_pComboBox->GetCount();
for (int i = 0; i < nItems; i++)
{
   strIns.Format(_T("item string %c"), (char)('A' + i));
   m_pComboBox->InsertString(2 * i, strIns);
}

CComboBox::LimitText

Limite la longueur en octets du texte que l’utilisateur peut entrer dans le contrôle d’édition d’une zone de liste modifiable.

BOOL LimitText(int nMaxChars);

Paramètres

nMaxChars
Spécifie la longueur (en octets) du texte que l’utilisateur peut entrer. Si ce paramètre est 0, la longueur du texte est définie sur 65 535 octets.

Valeur de retour

Différent de zéro s’il réussit. Si elle est appelée pour une zone de liste modifiable avec le style CBS_DROPDOWNLIST ou pour une zone de liste modifiable sans contrôle d’édition, la valeur de retour est CB_ERR.

Notes

Si la zone de liste modifiable n’a pas le style CBS_AUTOHSCROLL, la définition de la limite de texte doit être supérieure à la taille du contrôle d’édition n’aura aucun effet.

LimitText limite uniquement le texte que l’utilisateur peut entrer. Il n’a aucun effet sur le texte déjà présent dans le contrôle d’édition lorsque le message est envoyé, ni n’affecte-t-il la longueur du texte copié dans le contrôle d’édition lorsqu’une chaîne dans la zone de liste est sélectionnée.

Exemple

// Limit the number of characters in the combo box's edit control to
// be the maximum number visible.

// Get the text metrics for the combo box; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDCCB = m_pComboBox->GetDC();
pDCCB->GetTextMetrics(&tm);
m_pComboBox->ReleaseDC(pDCCB);

CRect rect;
m_pComboBox->GetClientRect(&rect);

m_pComboBox->LimitText(rect.Width() / tm.tmAveCharWidth);

CComboBox::MeasureItem

Appelé par l’infrastructure lorsqu’une zone de liste modifiable avec un style de dessin propriétaire est créée.

virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);

Paramètres

lpMeasureItemStruct
Pointeur long vers une MEASUREITEMSTRUCT structure.

Notes

Par défaut, cette fonction membre ne fait rien. Remplacez cette fonction membre et renseignez la MEASUREITEMSTRUCT structure pour informer Windows des dimensions de la zone de liste déroulante dans la zone de liste modifiable. Si la zone de liste modifiable est créée avec le CBS_OWNERDRAWVARIABLE style, l’infrastructure appelle cette fonction membre pour chaque élément de la zone de liste. Sinon, ce membre n’est appelé qu’une seule fois.

L’utilisation du CBS_OWNERDRAWFIXED style dans une zone de liste modifiable de dessin propriétaire créée avec la SubclassDlgItem fonction membre implique d’autres CWnd considérations de programmation. Consultez la discussion de la note technique 14.

Consultez CWnd::OnMeasureItem une description de la MEASUREITEMSTRUCT structure.

Exemple

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The combo box control was created with
// the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
   ASSERT(lpMeasureItemStruct->CtlType == ODT_COMBOBOX);

   if (lpMeasureItemStruct->itemID != (UINT)-1)
   {
      LPCTSTR lpszText = (LPCTSTR)lpMeasureItemStruct->itemData;
      ASSERT(lpszText != NULL);
      CSize sz;
      CDC *pDC = GetDC();

      sz = pDC->GetTextExtent(lpszText);

      ReleaseDC(pDC);

      lpMeasureItemStruct->itemHeight = 2 * sz.cy;
   }
}

CComboBox::Paste

Insère les données du Presse-papiers dans le contrôle d’édition de la zone de liste modifiable à la position actuelle du curseur.

void Paste();

Notes

Les données sont insérées uniquement si le Presse-papiers contient des données au CF_TEXT format.

Exemple

// Replace all of the text in the combo box's edit control with the text
// in the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Paste();

CComboBox::ResetContent

Supprime tous les éléments de la zone de liste et modifie le contrôle d’une zone de liste modifiable.

void ResetContent();

Exemple

// Delete all the items from the combo box.
m_pComboBox->ResetContent();
ASSERT(m_pComboBox->GetCount() == 0);

CComboBox::SelectString

Recherche une chaîne dans la zone de liste d’une zone de liste modifiable et, si la chaîne est trouvée, sélectionne la chaîne dans la zone de liste et la copie dans le contrôle d’édition.

int SelectString(
    int nStartAfter,
    LPCTSTR lpszString);

Paramètres

nStartAfter
Contient l’index de base zéro de l’élément avant le premier élément à rechercher. Lorsque la recherche atteint le bas de la zone de liste, elle passe du haut de la zone de liste à l’élément spécifié par nStartAfter. Si -1, la zone de liste entière est recherchée à partir du début.

lpszString
Pointe vers la chaîne terminée par null qui contient le préfixe à rechercher. La recherche est indépendante de la casse. Cette chaîne peut donc contenir n’importe quelle combinaison de lettres majuscules et minuscules.

Valeur de retour

Index de base zéro de l’élément sélectionné si la chaîne a été trouvée. Si la recherche a échoué, la valeur de retour est CB_ERR et la sélection actuelle n’est pas modifiée.

Notes

Une chaîne est sélectionnée uniquement si ses caractères initiaux (à partir du point de départ) correspondent aux caractères de la chaîne de préfixe.

Notez que les fonctions membres et FindString les SelectString fonctions de membre recherchent une chaîne, mais la SelectString fonction membre sélectionne également la chaîne.

Exemple

// The string to match.
LPCTSTR lpszSelect = _T("item");

// Select the item that begins with the specified string.
int nSel = m_pComboBox->SelectString(0, lpszSelect);
ASSERT(nSel != CB_ERR);

CComboBox::SetCueBanner

Définit le texte d’indicateur affiché pour un contrôle de zone de liste modifiable.

BOOL SetCueBanner(LPCTSTR lpszText);

Paramètres

lpszText
[in] Pointeur vers une mémoire tampon terminée par null qui contient le texte de l’indicateur.

Valeur de retour

TRUE si la méthode réussit ; sinon, FALSE.

Notes

Le texte cue est une invite qui s’affiche dans la zone d’entrée du contrôle de zone de liste modifiable. Le texte de l’indicateur s’affiche jusqu’à ce que l’utilisateur fournisse une entrée.

Cette méthode envoie le CB_SETCUEBANNER message, qui est décrit dans le Kit de développement logiciel (SDK) Windows.

Exemple

Le premier exemple de code définit la variable, m_comboboxutilisée pour accéder par programmation au contrôle de zone de liste modifiable. Cette variable est utilisée dans l'exemple suivant.

// Variable to access the combo box control
CComboBox m_combobox;

L’exemple de code suivant définit la bannière d’indicateur pour le contrôle de zone de liste modifiable.

// Add extra initialization here.

// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
    str.Format(_T("Item %2d"), i);
    m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));

// End of extra initialization.

CComboBox::SetCurSel

Sélectionne une chaîne dans la zone de liste d’une zone de liste déroulante.

int SetCurSel(int nSelect);

Paramètres

nSelect
Spécifie l’index de base zéro de la chaîne à sélectionner. Si -1, toute sélection actuelle dans la zone de liste est supprimée et le contrôle d’édition est effacé.

Valeur de retour

Index de base zéro de l’élément sélectionné si le message réussit. La valeur de retour est si nSelect elle est CB_ERR supérieure au nombre d’éléments de la liste ou si nSelect elle est définie sur -1, ce qui efface la sélection.

Notes

Si nécessaire, la zone de liste fait défiler la chaîne en mode (si la zone de liste est visible). Le texte du contrôle d’édition de la zone de liste modifiable est modifié pour refléter la nouvelle sélection. Toute sélection précédente dans la zone de liste est supprimée.

Exemple

// Select the last item in the combo box.
int nLast = pmyComboBox->GetCount() - 1;
if (nLast >= 0)
   m_pComboBox->SetCurSel(nLast);

CComboBox::SetDroppedWidth

Appelez cette fonction pour définir la largeur minimale autorisée, en pixels, de la zone de liste d’une zone de liste déroulante.

int SetDroppedWidth(UINT nWidth);

Paramètres

nWidth
Largeur minimale autorisée de la partie zone de liste déroulante, en pixels.

Valeur de retour

Si elle réussit, la nouvelle largeur de la zone de liste, sinon CB_ERR.

Notes

Cette fonction s’applique uniquement aux zones de liste modifiable avec le ou CBS_DROPDOWNLIST le CBS_DROPDOWN style.

Par défaut, la largeur minimale autorisée de la zone de liste déroulante est 0. Lorsque la partie zone de liste de la zone de liste modifiable est affichée, sa largeur est supérieure à la largeur minimale autorisée ou à la largeur de zone de liste modifiable.

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);

CComboBox::SetEditSel

Sélectionne des caractères dans le contrôle d’édition d’une zone de liste modifiable.

BOOL SetEditSel(
    int nStartChar,
    int nEndChar);

Paramètres

nStartChar
Spécifie la position de départ. Si la position de départ est définie sur -1, toute sélection existante est supprimée.

nEndChar
Spécifie la position de fin. Si la position de fin est définie sur -1, tout le texte de la position de départ au dernier caractère du contrôle d’édition est sélectionné.

Valeur de retour

Différent de zéro si la fonction membre réussit ; sinon 0. C’est CB_ERR s’il CComboBox a le CBS_DROPDOWNLIST style ou n’a pas de zone de liste.

Notes

Les positions sont de base zéro. Pour sélectionner le premier caractère du contrôle d’édition, vous spécifiez une position de départ de 0. La position de fin correspond au caractère juste après le dernier caractère à sélectionner. Par exemple, pour sélectionner les quatre premiers caractères du contrôle d’édition, vous devez utiliser une position de départ de 0 et une position de fin de 4.

Remarque

Cette fonction n’est pas prise en charge par le contrôle Windows ComboBoxEx . Pour plus d’informations sur ce contrôle, consultez ComboBoxEx Contrôles dans le Kit de développement logiciel (SDK) Windows.

Exemple

Consultez l’exemple pour CComboBox::GetEditSel.

CComboBox::SetExtendedUI

Appelez la SetExtendedUI fonction membre pour sélectionner l’interface utilisateur par défaut ou l’interface utilisateur étendue d’une zone de liste déroulante avec le style ou CBS_DROPDOWNLIST le CBS_DROPDOWN style.

int SetExtendedUI(BOOL bExtended = TRUE);

Paramètres

bExtended
Spécifie si la zone de liste déroulante doit utiliser l’interface utilisateur étendue ou l’interface utilisateur par défaut. Une valeur de sélection de TRUE l’interface utilisateur étendue ; une valeur de FALSE sélection de l’interface utilisateur standard.

Valeur de retour

CB_OKAY si l’opération réussit ou CB_ERR si une erreur se produit.

Notes

L’interface utilisateur étendue peut être identifiée de la manière suivante :

  • Le fait de cliquer sur le contrôle statique affiche la zone de liste uniquement pour les zones de liste déroulante avec le CBS_DROPDOWNLIST style.

  • Appuyez sur la touche Flèche bas pour afficher la zone de liste (F4 est désactivée).

Le défilement dans le contrôle statique est désactivé lorsque la liste d’éléments n’est pas visible (les touches de direction sont désactivées).

Exemple

Consultez l’exemple pour CComboBox::GetExtendedUI.

CComboBox::SetHorizontalExtent

Définit la largeur, en pixels, par laquelle la partie zone de liste de la zone de liste modifiable peut faire défiler horizontalement.

void SetHorizontalExtent(UINT nExtent);

Paramètres

nExtent
Spécifie le nombre de pixels par lesquels la partie zone de liste déroulante de la zone de liste modifiable peut faire défiler horizontalement.

Notes

Si la largeur de la zone de liste est inférieure à cette valeur, la barre de défilement horizontale fait défiler horizontalement les éléments dans la zone de liste. Si la largeur de la zone de liste est égale ou supérieure à cette valeur, la barre de défilement horizontale est masquée ou, si la zone de liste modifiable a le CBS_DISABLENOSCROLL style, désactivée.

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);

// Set the horizontal extent so every character of all strings can
// be scrolled to.
m_pComboBox->SetHorizontalExtent(dx);

CComboBox::SetItemData

Définit la valeur 32 bits associée à l’élément spécifié dans une zone de liste déroulante.

int SetItemData(
    int nIndex,
    DWORD_PTR dwItemData);

Paramètres

nIndex
Contient un index de base zéro pour l’élément à définir.

dwItemData
Contient la nouvelle valeur à associer à l’élément.

Valeur de retour

CB_ERR si une erreur se produit.

Notes

Utilisez la SetItemDataPtr fonction membre si l’élément 32 bits doit être un pointeur.

Exemple

// Set the data of each item to be equal to its index.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->SetItemData(i, i);
}

CComboBox::SetItemDataPtr

Définit la valeur 32 bits associée à l’élément spécifié dans une zone de liste modifiable comme pointeur spécifié (void*).

int SetItemDataPtr(
    int nIndex,
    void* pData);

Paramètres

nIndex
Contient un index de base zéro pour l’élément.

pData
Contient le pointeur à associer à l’élément.

Valeur de retour

CB_ERR si une erreur se produit.

Notes

Ce pointeur reste valide pour la durée de vie de la zone de liste modifiable, même si la position relative de l’élément dans la zone de liste modifiable peut changer à mesure que les éléments sont ajoutés ou supprimés. Par conséquent, l’index de l’élément dans la zone peut changer, mais le pointeur reste fiable.

Exemple

// Set the data pointer of each item to be NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->SetItemDataPtr(i, NULL);
}

CComboBox::SetItemHeight

Appelez la SetItemHeight fonction membre pour définir la hauteur des éléments de liste dans une zone de liste modifiable ou la hauteur de la partie edit-control (ou static-text) d’une zone de liste modifiable.

int SetItemHeight(
    int nIndex,
    UINT cyItemHeight);

Paramètres

nIndex
Spécifie si la hauteur des éléments de liste ou la hauteur de la partie edit-control (ou static-text) de la zone de liste modifiable est définie.

Si la zone de liste modifiable a le CBS_OWNERDRAWVARIABLE style, nIndex spécifie l’index de base zéro de l’élément de liste dont la hauteur doit être définie ; sinon, nIndex doit être 0 et la hauteur de tous les éléments de liste est définie.

Si nIndex la valeur est -1, la hauteur de la partie edit-control ou static-text de la zone de liste modifiable doit être définie.

cyItemHeight
Spécifie la hauteur, en pixels, du composant de zone de liste modifiable identifié par nIndex.

Valeur de retour

CB_ERR si l’index ou la hauteur n’est pas valide ; sinon 0.

Notes

La hauteur de la partie edit-control (ou static-text) de la zone de liste modifiable est définie indépendamment de la hauteur des éléments de liste. Une application doit s’assurer que la hauteur de la partie edit-control (ou static-text) n’est pas inférieure à la hauteur d’un élément de zone de liste particulier.

Exemple

// Set the height of every item to be the
// vertical size of the item's text extent.
CString str;
CSize sz;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, str);
   sz = pDC->GetTextExtent(str);

   m_pComboBox->SetItemHeight(i, sz.cy);
}
m_pComboBox->ReleaseDC(pDC);

CComboBox::SetLocale

Définit l’identificateur de paramètres régionaux pour cette zone de liste déroulante.

LCID SetLocale(LCID nNewLocale);

Paramètres

nNewLocale
Nouvelle valeur d’identificateur de paramètres régionaux (LCID) à définir pour la zone de liste modifiable.

Valeur de retour

Valeur de l’identificateur de paramètres régionaux précédent (LCID) pour cette zone de liste déroulante.

Notes

Si SetLocale ce n’est pas le cas, les paramètres régionaux par défaut sont obtenus à partir du système. Les paramètres régionaux par défaut de ce système peuvent être modifiés à l’aide de l’application régionale (ou internationale) de Panneau de configuration.

Exemple

// My LCID to use.
LCID mylcid = MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN),
                       SORT_DEFAULT);

// Force the list box to use my locale.
m_pComboBox->SetLocale(mylcid);
ASSERT(m_pComboBox->GetLocale() == mylcid);

CComboBox::SetMinVisibleItems

Définit le nombre minimal d’éléments visibles dans la liste déroulante du contrôle de zone de liste déroulante actuel.

BOOL SetMinVisibleItems(int iMinVisible);

Paramètres

iMinVisible
[in] Spécifie le nombre minimal d’éléments visibles.

Valeur de retour

TRUE si cette méthode réussit ; sinon, FALSE.

Notes

Cette méthode envoie le CB_SETMINVISIBLE message, qui est décrit dans le Kit de développement logiciel (SDK) Windows.

Exemple

Le premier exemple de code définit la variable, m_comboboxutilisée pour accéder par programmation au contrôle de zone de liste modifiable. Cette variable est utilisée dans l'exemple suivant.

// Variable to access the combo box control
CComboBox m_combobox;

L’exemple de code suivant insère 20 éléments dans la liste déroulante d’un contrôle de zone de liste déroulante. Ensuite, il spécifie qu’un minimum de 10 éléments doit être affiché lorsqu’un utilisateur appuie sur la flèche déroulante.

// Add extra initialization here.

// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
    str.Format(_T("Item %2d"), i);
    m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));

// End of extra initialization.

CComboBox::SetTopIndex

Garantit qu’un élément particulier est visible dans la partie zone de liste de la zone de liste déroulante.

int SetTopIndex(int nIndex);

Paramètres

nIndex
Spécifie l’index de base zéro de l’élément de zone de liste.

Valeur de retour

Zéro si elle réussit ou CB_ERR si une erreur se produit.

Notes

Le système fait défiler la zone de liste jusqu’à ce que l’élément spécifié nIndex s’affiche en haut de la zone de liste ou que la plage de défilement maximale ait été atteinte.

Exemple

// Set the first visible item in the combo box to be the middle item
m_pComboBox->SetTopIndex(m_pComboBox->GetCount() / 2);

CComboBox::ShowDropDown

Affiche ou masque la zone de liste d’une zone de liste modifiable qui a le ou CBS_DROPDOWNLIST le CBS_DROPDOWN style.

void ShowDropDown(BOOL bShowIt = TRUE);

Paramètres

bShowIt
Spécifie si la zone de liste déroulante doit être affichée ou masquée. Valeur d’affichage de la zone de TRUE liste. Une valeur de masque la zone de FALSE liste.

Notes

Par défaut, une zone de liste modifiable de ce style affiche la zone de liste.

Cette fonction membre n’a aucun effet sur une zone de liste modifiable créée avec le CBS_SIMPLE style.

Exemple

Consultez l’exemple pour CComboBox::GetDroppedState.

Voir aussi

Exemple MFC CTRLBARS
CWnd Classe
Graphique hiérarchique
CWnd Classe
CButton Classe
CEdit Classe
CListBox Classe
CScrollBar Classe
CStatic Classe
CDialog Classe