Die Classe WC_COMBOBOXEX beinhaltet doch weitere Klassen?
Ja, das ist korrekt! Die Klasse WC_COMBOBOXEX (also ComboBoxEx in der WinAPI) erweitert die Standard-ComboBox und integriert verschiedene Steuerelemente wie WC_COMBOBOX, WC_EDIT und WC_LISTBOX.
Diese Erweiterung bietet zusätzliche Funktionen, wie etwa die Möglichkeit, Symbole (Icons) neben den Elementen anzuzeigen oder eine erweiterte Bearbeitungsmöglichkeit im Editierfeld bereitzustellen.
Hier ist eine Übersicht über die drei Hauptkomponenten, aus denen WC_COMBOBOXEX besteht:
- Funktion
Dies ist die grundlegende ComboBox, die eine Liste von Elementen (Items) zur Auswahl stellt und eine Option zur Anzeige im Editierfeld bietet.
- Elemente
Die Standard-ComboBox besteht in der Regel aus einem Dropdown-Button und einem Listenteil (der aufpoppt, wenn der Benutzer den Dropdown-Button klickt).
2.) WC_EDIT (Edit)
- Funktion
Das Edit-Steuerelement stellt den Textbereich in der ComboBox bereit, in dem der Benutzer Eingaben machen kann. In einer ComboBox mit CBS_DROPDOWN-Style kann der Benutzer den Text direkt bearbeiten.
- Eigenschaften
Der Textbereich kann auf Wunsch schreibgeschützt oder editierbar sein, je nach Stil der ComboBox (CBS_DROPDOWN für editierbar oder CBS_DROPDOWNLIST für nicht editierbar).
3.) WC_LISTBOX (ListBox)
- Funktion
Die ListBox ist der Teil der ComboBox, der die tatsächlichen Elemente enthält und anzeigt, wenn das Dropdown geöffnet wird.
- Eigenschaften
Sie zeigt eine Liste von auswählbaren Elementen an und ermöglicht es dem Benutzer, eine Auswahl zu treffen, die im Editierbereich angezeigt wird.
4.) ComboBoxEx-Erweiterungen:
ComboBoxEx erweitert die Standard-ComboBox um zusätzliche Features, die in der normalen ComboBox nicht verfügbar sind:
1. Icon-Unterstützung
Du kannst in der ComboBoxEx neben den Listeneinträgen Symbole (Icons) anzeigen lassen, was besonders nützlich ist, wenn die Einträge visuell ansprechend oder besser erkennbar gemacht werden sollen.
2. Mehr Kontrolle über die Item-Daten
Die Items in der ComboBoxEx können mehr Daten enthalten als einfache Textwerte, wie zum Beispiel zusätzliche Item-Informationen oder benutzerdefinierte Datenstrukturen.
3. Automatische Vervollständigung ComboBoxEx bietet Unterstützung für die automatische Vervollständigung (Autocomplete), was dem Benutzer hilft, Einträge schneller zu finden, indem er sie während der Eingabe automatisch vervollständigt.
4. Verbesserte API
Es gibt spezielle Nachrichten wie CBEM_SETIMAGELIST und CBEM_INSERTITEM, die das Arbeiten mit Symbolen und anderen Features der ComboBoxEx ermöglichen.
5.) Beispiel für eine ComboBoxEx mit Symbolen:
Hier ein Beispiel, wie du eine ComboBoxEx mit Symbolen verwenden kannst:
#include <windows.h>
#include <commctrl.h>
// Initialisierung der Common Controls (z. B. im Dialog-Setup oder im InitDialog)
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_USEREX_CLASSES; // Initialisiert Erweiterte Steuerelemente
InitCommonControlsEx(&icex);
// Erstellung einer ComboBoxEx
HWND hwndComboBoxEx = CreateWindowEx(0, WC_COMBOBOXEX, NULL,
CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_BORDER,
10, 10, 200, 150, hwndParent, NULL, hInstance, NULL);
// Setze eine Bildliste für die ComboBoxEx
HIMAGELIST hImageList = ImageList_Create(16, 16, ILC_COLOR32, 1, 1);
ImageList_AddIcon(hImageList, LoadIcon(NULL, IDI_APPLICATION));
SendMessage(hwndComboBoxEx, CBEM_SETIMAGELIST, 0, (LPARAM)hImageList);
// Füge ein Item mit einem Icon hinzu
COMBOBOXEXITEM cbei = {0 };
cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
cbei.iItem =0;
cbei.pszText = L"Item 1";
cbei.iImage =0;
cbei.iSelectedImage =0;
SendMessage(hwndComboBoxEx, CBEM_INSERTITEM, 0, (LPARAM)&cbei);
6.) Fazit:
WC_COMBOBOXEX kombiniert die Funktionalitäten der WC_COMBOBOX, WC_EDIT und WC_LISTBOX und erweitert sie um zusätzliche Features wie Symbole, komplexere Datenspeicherung und eine verbesserte Benutzererfahrung durch Autocomplete. Dies macht sie zu einem sehr flexiblen und leistungsstarken Steuerelement für viele Anwendungen in der Windows-Oberflächenprogrammierung.
FAQ 48: Aktualisiert am: 29 September 2024 10:51Windows
Die #pragma optimize Direktive in C++ / CPP ist eine Compiler-Direktive, die verwendet wird, um Optimierungsoptionen für spezifische Abschnitte von Code
Das Abfragen, ob ein Pfad ein Ordner, bzw. Verzeichnis ist ist recht einfach in C++ Der Quellcode demonstriert eine einfache Anwendung, die prüft, ob ein
Mit eigenem Trim-String in CPP oder C einfach Zeichenfolgen individuell Kürzen, um am Anfang des Strings und abschließende Leerzeichen und Tabs zu entfernen
Diese Webseite speichert keine personenbezogenen Daten. Allerdings werden Drittanbieter verwendet, um Werbung zu schalten. Diese wird von Google verwaltet und entspricht dem IAB Transparency and Consent Framework (IAB-TCF). Die CMP-ID lautet 300 und kann am Seitenende individuell angepasst werden. mehr Infos & Datenschutz ....