Vorbereiten von ComboBoxEx-Elementen und Bildern
In diesem Thema wird veranschaulicht, wie Einem ComboBoxEx-Steuerelement Elemente hinzugefügt werden.
Um einem ComboBoxEx-Steuerelement ein Element hinzuzufügen, definieren Sie zunächst eine COMBOBOXEXITEM-Struktur . Legen Sie dann das Maskenelement der -Struktur fest, um anzugeben, welche Member das Steuerelement verwenden soll. Legen Sie schließlich die angegebenen Member der Struktur auf die gewünschten Werte fest, und senden Sie die CBEM_INSERTITEM Nachricht, um das Element zum Steuerelement hinzuzufügen.
Die folgende anwendungsdefinierte Funktion fügt einem vorhandenen ComboBoxEx-Steuerelement 15 Elemente hinzu.
Wichtige Informationen
Technologien
Voraussetzungen
- C/C++
- Programmierung der Windows-Benutzeroberfläche
Anweisungen
Schritt 1:
Um einem ComboBoxEx-Steuerelement ein Element hinzuzufügen, definieren Sie zunächst eine COMBOBOXEXITEM-Struktur .
COMBOBOXEXITEM cbei;
int iCnt;
typedef struct {
int iImage;
int iSelectedImage;
int iIndent;
LPTSTR pszText;
} ITEMINFO, *PITEMINFO;
ITEMINFO IInf[ ] = {
{ 0, 3, 0, L"first"},
{ 1, 4, 1, L"second"},
{ 2, 5, 2, L"third"},
{ 0, 3, 0, L"fourth"},
{ 1, 4, 1, L"fifth"},
{ 2, 5, 2, L"sixth"},
{ 0, 3, 0, L"seventh"},
{ 1, 4, 1, L"eighth"},
{ 2, 5, 2, L"ninth"},
{ 0, 3, 0, L"tenth"},
{ 1, 4, 1, L"eleventh"},
{ 2, 5, 2, L"twelfth"},
{ 0, 3, 0, L"thirteenth"},
{ 1, 4, 1, L"fourteenth"},
{ 2, 5, 2, L"fifteenth"}
};
Schritt 2:
Legen Sie das Maskenelement der -Struktur fest, um anzugeben, welche Member das Steuerelement verwenden soll. Beachten Sie, dass das Maskenelement der COMBOBOXEXITEM-Struktur Flagwerte enthält, die das Steuerelement anweisen, Bilder für jedes Element anzuzeigen.
// Set the mask common to all items.
cbei.mask = CBEIF_TEXT | CBEIF_INDENT |
CBEIF_IMAGE| CBEIF_SELECTEDIMAGE;
Schritt 3:
Legen Sie die angegebenen Member der Struktur auf die gewünschten Werte fest, und senden Sie dann die CBEM_INSERTITEM Nachricht, um das Element zum Steuerelement hinzuzufügen.
for(iCnt=0;iCnt<MAX_ITEMS;iCnt++){
// Initialize the COMBOBOXEXITEM struct.
cbei.iItem = iCnt;
cbei.pszText = IInf[iCnt].pszText;
cbei.cchTextMax = sizeof(IInf[iCnt].pszText);
cbei.iImage = IInf[iCnt].iImage;
cbei.iSelectedImage = IInf[iCnt].iSelectedImage;
cbei.iIndent = IInf[iCnt].iIndent;
// Tell the ComboBoxEx to add the item. Return FALSE if
// this fails.
if(SendMessage(hwndCB,CBEM_INSERTITEM,0,(LPARAM)&cbei) == -1)
return FALSE;
Schritt 4:
Weisen Sie die vorhandene Bildliste dem ComboBoxEx-Steuerelement zu, und legen Sie die Größe des Steuerelements fest.
// Assign the existing image list to the ComboBoxEx control
// and return TRUE.
// g_himl is the handle to the existing image list
SendMessage(hwndCB,CBEM_SETIMAGELIST,0,(LPARAM)g_himl);
// Set size of control to make sure it's displayed correctly now
// that the image list is set.
SetWindowPos(hwndCB,NULL,20,20,250,120,SWP_NOACTIVATE);
return TRUE;
Vollständiges Beispiel
// AddItems - Uses the CBEM_INSERTITEM message to add items to an
// existing ComboBoxEx control.
BOOL WINAPI AddItems(HWND hwndCB)
{
// Declare and init locals.
COMBOBOXEXITEM cbei;
int iCnt;
typedef struct {
int iImage;
int iSelectedImage;
int iIndent;
LPTSTR pszText;
} ITEMINFO, *PITEMINFO;
ITEMINFO IInf[ ] = {
{ 0, 3, 0, L"first"},
{ 1, 4, 1, L"second"},
{ 2, 5, 2, L"third"},
{ 0, 3, 0, L"fourth"},
{ 1, 4, 1, L"fifth"},
{ 2, 5, 2, L"sixth"},
{ 0, 3, 0, L"seventh"},
{ 1, 4, 1, L"eighth"},
{ 2, 5, 2, L"ninth"},
{ 0, 3, 0, L"tenth"},
{ 1, 4, 1, L"eleventh"},
{ 2, 5, 2, L"twelfth"},
{ 0, 3, 0, L"thirteenth"},
{ 1, 4, 1, L"fourteenth"},
{ 2, 5, 2, L"fifteenth"}
};
// Set the mask common to all items.
cbei.mask = CBEIF_TEXT | CBEIF_INDENT |
CBEIF_IMAGE| CBEIF_SELECTEDIMAGE;
for(iCnt=0;iCnt<MAX_ITEMS;iCnt++){
// Initialize the COMBOBOXEXITEM struct.
cbei.iItem = iCnt;
cbei.pszText = IInf[iCnt].pszText;
cbei.cchTextMax = sizeof(IInf[iCnt].pszText);
cbei.iImage = IInf[iCnt].iImage;
cbei.iSelectedImage = IInf[iCnt].iSelectedImage;
cbei.iIndent = IInf[iCnt].iIndent;
// Tell the ComboBoxEx to add the item. Return FALSE if
// this fails.
if(SendMessage(hwndCB,CBEM_INSERTITEM,0,(LPARAM)&cbei) == -1)
return FALSE;
}
// Assign the existing image list to the ComboBoxEx control
// and return TRUE.
// g_himl is the handle to the existing image list
SendMessage(hwndCB,CBEM_SETIMAGELIST,0,(LPARAM)g_himl);
// Set size of control to make sure it's displayed correctly now
// that the image list is set.
SetWindowPos(hwndCB,NULL,20,20,250,120,SWP_NOACTIVATE);
return TRUE;
}
Zugehörige Themen