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 de début et de fin des caractères 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 )
où 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 leCBS_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 leCBS_SIMPLE
style. Pour une zone de liste déroulante avec le style ouCBS_DROPDOWNLIST
leCBS_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 ouCBS_DROPDOWNLIST
leCBS_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 auCBN_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 leCBS_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 leCBS_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 leCBN_CLOSEUP
message de notification pour indiquer que la sélection de l’utilisateur doit être ignorée.CBN_SELENDOK
LeCBN_SELENDCANCEL
ou le message de notification est envoyé même si leCBN_CLOSEUP
message de notification n’est pas envoyé (comme dans le cas d’une zone de liste modifiable avec leCBS_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 leCBN_CLOSEUP
message pour indiquer que la sélection de l’utilisateur doit être considérée comme valide.CBN_SELENDOK
LeCBN_SELENDCANCEL
ou le message de notification est envoyé même si leCBN_CLOSEUP
message de notification n’est pas envoyé (comme dans le cas d’une zone de liste modifiable avec leCBS_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’aideGetLBText
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 CEdit
CListBox
ajouter des gestionnaires pour ces messages aux classes dérivées. Pour plus d’informations, consultez CWnd::SubclassWindow
.
Hiérarchie d'héritage
CComboBox
Spécifications
En-tête : afxwin.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 :
Valeur | 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_NCCREATE
messages , et WM_CREATE
WM_NCCALCSIZE
WM_GETMINMAXINFO
les messages à la zone de liste déroulante.
Ces messages sont gérés par défaut par les OnNcCreate
fonctions membres et OnNcCalcSize
OnGetMinMaxInfo
, OnCreate
par 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
ToujoursWS_VISIBLE
HabituellementWS_DISABLED
RarementWS_VSCROLL
Pour ajouter un défilement vertical pour la zone de liste déroulante dans la zone de liste déroulanteWS_HSCROLL
Pour ajouter un défilement horizontal pour la zone de liste déroulante dans la zone de liste déroulanteWS_GROUP
Pour regrouper les contrôlesWS_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é parlpszWildCard
un répertoire.DDL_ARCHIVE
Le fichier a été archivé.DDL_DRIVES
Incluez tous les lecteurs qui correspondent au nom spécifié parlpszWildCard
.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 (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 [
COMBOBOXINFO'](/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 de début et de fin des caractères 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_ERRSPACE
qui 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 AddString
InsertString
Dir
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_combobox
utilisé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_combobox
utilisé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