Windows Programmierung: Listbox |
Einführende Informationen über die Programmierung von Kontrollelementen werden hier vorausgesetzt.
LBS_MULTIPLESEL ermöglicht die Mehrfachselektion. Mit Hilfe der Shift- und der Control-Taste können mehrere Elemente angewählt werden.
case WM_COMMAND:
switch(LOWORD(wParam)) {
case ID_LISTBOX:
switch (HIWORD(wParam)) {
case LBN_DBLCLK:
ListIndex = SendMessage(hListe, LB_GETCURSEL, 0, 0);
Person = (tPerson *)SendMessage(hListe, LB_GETITEMDATA, ListIndex, 0);
return TRUE;
case LBN_SELCHANGE:
// lParam enthaelt die hwnd der listbox
ListIndex = SendMessage((HWND)lParam, LB_GETCURSEL, 0, 0);
| LBN_DBLCLK | Item wurde doppelt angeklickt (oder Returntaste) |
| LBN_SELCANCEL | Anwender hat Selektion abgebrochen |
| LBN_SELCHANGE | Das selektierte Item wurde gewechselt |
| Nachricht | wParam | lParam | Rückgabe |
|---|---|---|---|
| LB_ADDSTRING | 0 | Zeiger auf den String | Index des neuen Items, bei Fehler LB_ERR |
| LB_INSERTSTRING | Zielindex des Items, -1 für hinten | Zeiger auf den String | bei Fehler LB_ERR |
| LB_DELETESTRING | Index des Items | 0 | bei Fehler LB_ERR |
| LB_RESETCONTENT | 0 | 0 | bei Fehler LB_ERR |
AddString hängt Einträge hinten an, sofern die Listbox nicht den Style LBS_SORT besitzt. ResetContent löscht alle Einträge der Liste.
| Nachricht | wParam | lParam | Rückgabe |
|---|---|---|---|
| LB_SETITEMDATA | Index des Items | 4-Byte-Data | Bei Fehler LB_ERR |
| LB_GETITEMDATA | Index des Items | NULL | 4-Byte-Data |
ListIndex = SendMessage((HWND)lParam, LB_GETCURSEL, 0, 0);
Bei Multiselektions-Listboxen wird die Nachricht LB_GETSELITEMS an die Box gesandt. Als Ergebnis wird ein Array von Integern zurückgegeben. Den Speicher dazu stellt die Anwendung. Ein typisches Vorgehen sieht so aus:
SelCount = SendMessage(HwndList, LB_GETSELCOUNT, 0, 0);
int *SelIndex = new int(SelCount);
SelCount = SendMessage(HwndList, LB_GETSELITEMS, SelCount, (LPARAM)SelIndex);
for (int i=0; i<SelCount; i++) {
....
| Homepage - Windows-API-Programmierung | (C) Copyright 1999, 2008 Arnold Willemer |