Informationen zu Listenfeldern
Ein Listenfeld-Steuerelement enthält eine einfache Liste, aus der der Benutzer in der Regel ein oder mehrere Elemente auswählen kann. Listenfelder bieten im Vergleich zu Listenansicht-Steuerelementen eine eingeschränkte Flexibilität.
Listenfeldelemente können durch Textzeichenfolgen, Bitmaps oder beides dargestellt werden. Wenn das Listenfeld nicht groß genug ist, um alle Listenfeldelemente gleichzeitig anzuzeigen, stellt das Listenfeld eine Bildlaufleiste zur Auswahl. Der Benutzer führt einen Bildlauf durch die Listenfeldelemente durch und wendet bei Bedarf den Auswahlstatus an oder entfernt ihn. Das Auswählen eines Listenfeldelements ändert seine visuelle Darstellung, in der Regel durch Ändern der Text- und Hintergrundfarben in die von den relevanten Betriebssystemmetriken angegebenen Farben. Wenn der Benutzer ein Element auswählt oder deaktiviert, sendet das System eine Benachrichtigung an das übergeordnete Fenster des Listenfelds.
Bei einer ANSI-Anwendung konvertiert das System den Text in einem Listenfeld mithilfe der CP _ ACP-Codepage in Unicode. Dies kann zu Problemen führen. Beispielsweise werden in einem Nicht-Unicode-Listenfeld in Windows japanische Version akzentierte zeichen angezeigt. Kompilieren Sie die Anwendung entweder als Unicode, oder verwenden Sie ein vom Besitzer gezeichnetes Listenfeld, um dieses Problem zu beheben.
In diesem Abschnitt werden die folgenden Themen erläutert:
- Erstellen eines Listenfelds
- Listenfeldtypen und -stile
- Listenfeldfunktionen
- Benachrichtigungsmeldungen aus Listenfeldern
- Nachrichten an Listenfelder
- Standardfenster-Nachrichtenverarbeitung
- Vom Besitzer gezeichnete Listenfelder
- Ziehen von Listenfeldern
Erstellen eines Listenfelds
Die einfachste Möglichkeit, ein Listenfeld in einem Dialogfeld zu erstellen, besteht im Ziehen aus der Toolbox in Microsoft Visual Studio auf ihre Dialogressource. Um ein Listenfeld dynamisch zu erstellen oder ein Listenfeld in einem anderen Fenster als einem Dialogfeld zu erstellen, verwenden Sie die CreateWindowEx-Funktion, und geben Sie die FENSTERKLASSE WC _ LISTBOX und die entsprechenden Listenfeldstile an.
Listenfeldtypen und -stile
Es gibt zwei Arten von Listenfeldern: Einzelauswahl (Standardeinstellung) und Mehrfachauswahl. In einem Listenfeld mit nur einer Auswahl kann der Benutzer nur ein Element gleichzeitig auswählen. In einem Listenfeld mit mehrfacher Auswahl kann der Benutzer mehrere Elemente gleichzeitig auswählen. Um ein Listenfeld mit mehrfacher Auswahl zu erstellen, geben Sie den Stil LBS _ MULTIPLESEL oder LBS _ EXTENDEDSEL an.
Die Darstellung und der Vorgang eines Listenfelds wird durch Listenfeldstile und Fensterstile gesteuert. Diese Stile geben an, ob die Liste sortiert, in mehreren Spalten angeordnet, von der Anwendung gezeichnet wird, und so weiter. Die Dimensionen und Stile eines Listenfelds werden in der Regel in einer Dialogfeldvorlage definiert, die in den Ressourcen einer Anwendung enthalten ist.
Hinweis
Um visuelle Stile mit diesen Steuerelementen zu verwenden, muss eine Anwendung ein Manifest enthalten und InitCommonControls am Anfang des Programms aufrufen. Informationen zu visuellen Stilen finden Sie unter Visuelle Stile. Informationen zu Manifesten finden Sie unter Aktivieren von visuellen Stilen.
Listenfeldfunktionen
Die DlgDirList-Funktion ersetzt den Inhalt eines Listenfelds durch die Namen von Laufwerken, Verzeichnissen und Dateien, die einem angegebenen Kriteriensatz entsprechen. Die DlgDirSelectEx-Funktion ruft die aktuelle Auswahl in einem Listenfeld ab, das von DlgDirList initialisiert wird. Mit diesen Funktionen kann der Benutzer ein Laufwerk, ein Verzeichnis oder eine Datei aus einem Listenfeld auswählen, ohne den Speicherort und namen der Datei eingeben zu müssen.
Außerdem gibt die GetListBoxInfo-Funktion die Anzahl der Elemente pro Spalte in einem angegebenen Listenfeld zurück.
Benachrichtigungsmeldungen aus Listenfeldern
Wenn ein Ereignis in einem Listenfeld auftritt, sendet das Listenfeld einen Benachrichtigungscode in Form einer WM _ COMMAND-Meldung an die Dialogfeldprozedur des Besitzerfensters. Listenfeld-Benachrichtigungscodes werden gesendet, wenn ein Benutzer ein Listenfeldelement auswählt, doppelklickt oder abbricht. , wenn das Listenfeld den Tastaturfokus empfängt oder verliert; und , wenn das System nicht genügend Arbeitsspeicher für eine Listenfeldanforderung zuordnen kann. Eine WM _ COMMAND-Meldung enthält den Listenfeldbezeichner im niedrigen Wort des wParam-Parameters und den Benachrichtigungscode im hohen Wort. Der lParam-Parameter enthält das Steuerfensterhandl.
Zum Verarbeiten dieser Meldungen ist keine Dialogfeldprozedur erforderlich. Die Standardfensterprozedur verarbeitet sie.
Eine Anwendung sollte die folgenden Listenfeld-Benachrichtigungscodes überwachen und verarbeiten.
| Benachrichtigungscode | Beschreibung |
|---|---|
| LBN _ DBLCLK | Der Benutzer doppelklickt auf ein Element im Listenfeld. |
| LBN _ ERRSPACE | Das Listenfeld kann nicht genügend Arbeitsspeicher zuordnen, um eine Anforderung zu erfüllen. |
| LBN _ KILLFOCUS | Das Listenfeld verliert den Tastaturfokus. |
| LBN _ SELCANCEL | Der Benutzer bricht die Auswahl eines Elements im Listenfeld ab. |
| LBN _ SELCHANGE | Die Auswahl in einem Listenfeld wird sich ändern. |
| LBN _ SETFOCUS | Das Listenfeld erhält den Tastaturfokus. |
Nachrichten an Listenfelder
Eine Dialogfeldprozedur kann Nachrichten an ein Listenfeld senden, um Listenfeldelemente hinzuzufügen, zu löschen, zu untersuchen und zu ändern. Beispielsweise könnte eine Dialogfeldprozedur eine LB _ ADDSTRING-Nachricht an ein Listenfeld senden, um ein Element hinzuzufügen, und eine LB _ GETSEL-Nachricht, um zu bestimmen, ob das Element ausgewählt ist. Andere Meldungen legen Informationen zur Größe, Darstellung und zum Verhalten des Listenfelds fest und rufen sie ab. Beispielsweise legt die LB _ SETHORIZONTALEXTENT-Meldung die scrollbare Breite eines Listenfelds fest. Eine Dialogfeldprozedur kann jede Nachricht mithilfe der SendMessage- oder SendDlgItemMessage-Funktion an ein Listenfeld senden.
Auf ein Listenfeldelement wird häufig durch seinen Index verwiesen. Dies ist eine ganze Zahl, die die Position des Elements im Listenfeld darstellt. Der Index des ersten Elements in einem Listenfeld ist 0, der Index des zweiten Elements ist 1 und so weiter.
In der folgenden Tabelle wird beschrieben, wie die vordefinierte Listenfeldprozedur auf Listenfeldmeldungen reagiert.
Message |
Antwort |
|---|---|
| LB _ ADDFILE | Fügt eine Datei in ein Verzeichnislistenfeld ein, das von der DlgDirList-Funktion ausgefüllt wird, und ruft den Listenfeldindex des eingefügten Elements ab. |
| LB _ ADDSTRING | Fügt einem Listenfeld eine Zeichenfolge hinzu und gibt ihren Index zurück. |
| LB _ DELETESTRING | Entfernt eine Zeichenfolge aus einem Listenfeld und gibt die Anzahl der Zeichenfolgen zurück, die in der Liste verbleiben. |
| LB _ DIR | Fügt einem Listenfeld eine Liste von Dateinamen hinzu und gibt den Index des zuletzt hinzugefügten Dateinamens zurück. |
| LB _ FINDSTRING | Gibt den Index der ersten Zeichenfolge im Listenfeld zurück, die mit einer angegebenen Zeichenfolge beginnt. |
| LB _ FINDSTRINGEXACT | Gibt den Index der Zeichenfolge im Listenfeld zurück, der einer angegebenen Zeichenfolge entspricht. |
| LB _ GETANCHORINDEX | Gibt den Index des Elements zurück, das die Maus zuletzt ausgewählt hat. |
| LB _ GETCARETINDEX | Gibt den Index des Elements zurück, das über das Fokusrechteck verfügt. |
| LB _ GETCOUNT | Gibt die Anzahl der Elemente im Listenfeld zurück. |
| LB _ GETCURSEL | Gibt den Index des aktuell ausgewählten Elements zurück. |
| LB _ GETHORIZONTALEXTENT | Gibt die bildlauffähige Breite eines Listenfelds in Pixel zurück. |
| LB _ GETITEMDATA | Gibt den Wert zurück, der dem angegebenen Element zugeordnet ist. |
| LB _ GETITEMHEIGHT | Gibt die Höhe eines Elements in einem Listenfeld in Pixel zurück. |
| LB _ GETITEMRECT | Ruft die Clientkoordinaten des angegebenen Listenfeldelements ab. |
| LB _ GETLOCALE | Ruft das Gebietsschema des Listenfelds ab. Das Wort in hoher Reihenfolge enthält den Länder-/Regionscode, und das Wort mit niedriger Reihenfolge enthält den Sprachbezeichner. |
| LB _ GETSEL | Gibt den Auswahlzustand eines Listenfeldelements zurück. |
| LB _ GETSELCOUNT | Gibt die Anzahl der ausgewählten Elemente in einem Listenfeld mit mehrfacher Auswahl zurück. |
| LB _ GETSELITEMS | Erstellt ein Array der Indizes aller ausgewählten Elemente in einem Listenfeld mit mehrfacher Auswahl und gibt die Gesamtzahl der ausgewählten Elemente zurück. |
| LB _ GETTEXT | Ruft die Einem angegebenen Element zugeordnete Zeichenfolge und die Länge der Zeichenfolge ab. |
| LB _ GETTEXTLEN | Gibt die Länge der Zeichenfolge, die einem angegebenen Element zugeordnet ist, in Zeichen zurück. |
| LB _ GETTOPINDEX | Gibt den Index des ersten sichtbaren Elements in einem Listenfeld zurück. |
| LB _ INITSTORAGE | Belegt Arbeitsspeicher für die angegebene Anzahl von Elementen und deren zugeordnete Zeichenfolgen. |
| LB _ INSERTSTRING | Fügt eine Zeichenfolge an einem angegebenen Index in ein Listenfeld ein. |
| LB _ ITEMFROMPOINT | Ruft den nullbasierten Index des Elements ab, das dem angegebenen Punkt in einem Listenfeld am nächsten ist. |
| LB _ RESETCONTENT | Entfernt alle Elemente aus einem Listenfeld. |
| LB _ SELECTSTRING | Wählt die erste gefundene Zeichenfolge aus, die einem angegebenen Präfix entspricht. |
| LB _ SELITEMRANGE | Wählt einen angegebenen Bereich von Elementen in einem Listenfeld aus. |
| LB _ SELITEMRANGEEX | Wählt einen angegebenen Bereich von Elementen aus, wenn der Index des ersten Elements im Bereich kleiner als der Index des letzten Elements im Bereich ist. Bricht die Auswahl im Bereich ab, wenn der Index des ersten Elements größer als das letzte ist. |
| LB _ SETANCHORINDEX | Legt das Element, das die Maus zuletzt ausgewählt hat, auf ein angegebenes Element fest. |
| LB _ SETCARETINDEX | Legt das Fokusrechteck auf ein angegebenes Listenfeldelement fest. |
| LB _ SETCOLUMNWIDTH | Legt die Breite aller Spalten in einem Listenfeld in Pixel fest. |
| LB _ SETCOUNT | Legt die Anzahl der Elemente in einem Listenfeld fest. |
| LB _ SETCURSEL | Wählt ein angegebenes Listenfeldelement aus. |
| LB _ SETHORIZONTALEXTENT | Legt die bildlauffähige Breite eines Listenfelds in Pixel fest. |
| LB _ SETITEMDATA | Ordnet einem Listenfeldelement einen Wert zu. |
| LB _ SETITEMHEIGHT | Legt die Höhe eines Elements oder von Elementen in einem Listenfeld in Pixel fest. |
| LB _ SETLOCALE | Legt das Gebietsschema eines Listenfelds fest und gibt den vorherigen Gebietsschemabezeichner zurück. |
| LB _ SETSEL | Wählt ein Element in einem Listenfeld mit mehrfacher Auswahl aus. |
| LB _ SETTABSTOPS | Legt die Tabstopps auf die in einem angegebenen Array angegebenen fest. |
| LB _ SETTOPINDEX | Führt einen Bildlauf im Listenfeld durch, sodass sich das angegebene Element am oberen Rand des sichtbaren Bereichs befindet. |
Standardfenster: Nachrichtenverarbeitung
Die Fensterprozedur für die vordefinierte Listenfeldfensterklasse führt die Standardverarbeitung für alle Nachrichten durch, die vom Listenfeld nicht verarbeitet werden. Wenn die Listenfeldprozedur FALSE für eine Nachricht zurückgibt, überprüft die vordefinierte Fensterprozedur die Nachricht und führt Standardaktionen aus, wie in der folgenden Tabelle gezeigt.
Message |
Standardaktion |
|---|---|
| WM _ CHAR | Verschiebt die Auswahl auf das erste Element, das mit dem zeichen beginnt, das der Benutzer eingegeben hat. Wenn das Listenfeld über den L BS _ OWNERDRAW-Stil verfügt, erfolgt keine Aktion. Mehrere Zeichen, die innerhalb eines kurzen Intervalls eingegeben werden, werden als Gruppe behandelt, und das erste Element, das mit dieser Zeichenreihe beginnt, wird ausgewählt. |
| WM _ CREATE | Erstellt ein leeres Listenfeld. |
| WM _ DESTROY | Zerstört das Listenfeld und gibt alle verwendeten Ressourcen frei. |
| Übergibt die Meldung an die Dialogfeldprozedur oder den Prozess des übergeordneten Fensters. | |
| WM _ ENABLE | Wenn das Steuerelement sichtbar ist, wird das Rechteck ungültig, damit die Zeichenfolgen grau gezeichnet werden können. |
| WM _ ERASEBKGND | Löscht den Hintergrund eines Listenfelds. Wenn das Listenfeld über den L BS _ OWNERDRAW-Stil verfügt, wird der Hintergrund nicht gelöscht. |
| WM _ GETDLGCODE | Gibt DLGC _ WANTGCWS | DLGC _ WANTCHARS zurück und gibt an, dass die Standardmäßige Listenfeldprozedur die Pfeiltasten und WM _ CHAR-Meldungen verarbeitet. |
| WM _ GETFONT | Gibt ein Handle für die aktuelle Schriftart für das Listenfeld zurück. |
| WM _ HSCROLL | Führt einen horizontalen Bildlauf im Listenfeld durch. |
| WM _ KEYDOWN | Verarbeitet virtuelle Schlüssel für das Scrollen. Der virtuelle Schlüssel ist der Index des Elements, in das das Caretelement verschoben werden soll. Die Auswahl wird nicht geändert. |
| WM _ KILLFOCUS | Schaltet das Caret-Gerät aus und zerstört es. Sendet einen LBN KILLFOCUS-Benachrichtigungscode _ an den Besitzer des Listenfelds. |
| WM _ LBUTTONDBLCLK | Verfolgt die Maus im Clientbereich des Listenfelds nach. Dadurch kann der Benutzer eine Auswahl abbrechen, wenn die Maustaste außerhalb des Clientbereichs des Listenfelds losgelassen wird. |
| WM _ LBUTTONDOWN | Verfolgt die Maus im Clientbereich des Listenfelds nach. Dadurch kann der Benutzer eine Auswahl abbrechen, wenn die Maustaste außerhalb des Clientbereichs des Listenfelds losgelassen wird. |
| WM _ LBUTTONUP | Verfolgt die Maus im Clientbereich des Listenfelds nach. Dadurch kann der Benutzer eine Auswahl abbrechen, wenn die Maustaste außerhalb des Clientbereichs des Listenfelds losgelassen wird. |
| WM _ MOUSEMOVE | Verfolgt die Maus im Clientbereich des Listenfelds nach. Dadurch kann der Benutzer eine Auswahl abbrechen, wenn die Maustaste außerhalb des Clientbereichs des Listenfelds losgelassen wird. |
| WM _ PAINT | Führt einen Zeichnen-Vorgang mit Unterklassen durch, indem das Listenfeldhandle für den Gerätekontext (DC) verwendet wird. |
| WM _ SETFOCUS | Aktiviert das Caretzeichen und sendet einen LBN SETFOCUS-Benachrichtigungscode _ an den Besitzer des Listenfelds. |
| WM _ SETFONT | Legt eine neue Schriftart für das Listenfeld fest. |
| WM _ SETREDRAW | Legt das neu gezeichnete Flag basierend auf dem Wert von wParam fest oder löscht es. |
| _WM-GRÖßE | Die Größe des Listenfelds wird auf eine ganzzahligen Anzahl von Elementen geändert. |
| WM _ VSCROLL | Führt einen vertikalen Bildlauf im Listenfeld durch. |
Die vordefinierte Listenfeldprozedur übergibt alle anderen Nachrichten zur Standardverarbeitung an DefWindowProc.
Owner-Drawn Listenfelder
Eine Anwendung kann ein vom Besitzer gezeichnetes Listenfeld erstellen, um die Verantwortung für das Zeichnen von Listenelementen zu übernehmen. Das übergeordnete Fenster oder Dialogfeld eines vom Besitzer gezeichneten Listenfelds (dessen Besitzer) empfängt WM _ DRAWITEM-Meldungen, wenn ein Teil des Listenfelds gezeichnet werden muss. Ein vom Besitzer gezeichnetes Listenfeld kann andere Informationen als oder zusätzlich zu Textzeichenfolgen auflisten.
Der Besitzer eines vom Besitzer gezeichneten Listenfelds muss die WM _ DRAWITEM-Nachricht verarbeiten. Diese Meldung wird immer dann gesendet, wenn ein Teil des Listenfelds neu gezeichnet werden muss. Abhängig von den für das Listenfeld angegebenen Formatvorlagen muss der Besitzer möglicherweise andere Nachrichten verarbeiten.
Eine Anwendung kann ein vom Besitzer gezeichnetes Listenfeld erstellen, indem sie den Stil LBS _ OWNERDRAWFIXED oder LBS _ OWNERDRAWVARIABLE angibt. Wenn alle Listenelemente im Listenfeld die gleiche Höhe aufweisen, z. B. Zeichenfolgen oder Symbole, kann eine Anwendung den LBS _ OWNERDRAWFIXED-Stil verwenden. Wenn Listenelemente eine unterschiedliche Höhe haben (z. B. Bitmaps unterschiedlicher Größe), kann eine Anwendung den LBS _ OWNERDRAWVARIABLE-Stil verwenden.
Der Besitzer eines vom Besitzer gezeichneten Listenfelds kann eine WM _ MEASUREITEM-Nachricht verarbeiten, um die Dimensionen von Listenelementen anzugeben. Wenn die Anwendung das Listenfeld mithilfe des LBS _ OWNERDRAWFIXED-Stils erstellt, sendet das System die WM _ MEASUREITEM-Nachricht nur einmal. Die vom Besitzer angegebenen Dimensionen werden für alle Listenelemente verwendet. Wenn der LBS _ OWNERDRAWVARIABLE-Stil verwendet wird, sendet das System eine WM _ MEASUREITEM-Nachricht für jedes Listenelement, das dem Listenfeld hinzugefügt wird. Der Besitzer kann die Höhe eines Listenelements jederzeit mithilfe der LB _ GETITEMHEIGHT- bzw. LB _ SETITEMHEIGHT-Nachrichten bestimmen oder festlegen.
Wenn die in einem vom Besitzer gezeichneten Listenfeld angezeigten Informationen Text enthalten, kann eine Anwendung den Text für jedes Listenelement nachverfolgen, indem sie den LBS _ HASSTRINGS-Stil angibt. Listenfelder mit dem _ LBS-SORT-Stil werden basierend auf diesem Text sortiert. Wenn ein Listenfeld sortiert ist, aber nicht im LBS _ HASSTRINGS-Format vorliegt, muss der Besitzer die WM _ COMPAREITEM-Nachricht verarbeiten.
In einem vom Besitzer gezeichneten Listenfeld muss der Besitzer Listenelemente nachverfolgen, die andere Informationen als oder zusätzlich zu Text enthalten. Eine praktische Möglichkeit hierfür ist das Speichern des Handles für die Informationen als Elementdaten mithilfe der LB _ SETITEMDATA-Nachricht. Zum Freigeben von Datenobjekten, die Elementen in einem Listenfeld zugeordnet sind, kann der Besitzer die WM _ DELETEITEM-Nachricht verarbeiten.
Ein Beispiel für ein vom Besitzer gezeichnetes Listenfeld finden Sie unter Erstellen eines Owner-Drawn Listenfelds.
Ziehen von Listenfeldern
Ein Ziehlistenfeld ist ein spezieller Listenfeldtyp, mit dem Benutzer Elemente von einer Position an eine andere ziehen können. Eine Anwendung kann ein Ziehlistenfeld verwenden, um Zeichenfolgen in einer bestimmten Sequenz anzuzeigen und es dem Benutzer zu ermöglichen, die Sequenz durch Ziehen der Elemente an die Position zu ändern.
Erstellen von Ziehlistenfeldern
Ziehlistenfelder weisen die gleichen Fensterstile auf und verarbeiten die gleichen Nachrichten wie Standardlistenfelder. Um ein Ziehlistenfeld zu erstellen, erstellen Sie zunächst ein Standardlistenfeld und rufen dann die MakeDragList-Funktion auf. Um ein Listenfeld in einem Dialogfeld in ein Ziehlistenfeld zu konvertieren, können Sie MakeDragList aufrufen, wenn die WM _ INITDIALOG-Nachricht verarbeitet wird.
Drag&160
Ein Ziehlistenfeld benachrichtigt das übergeordnete Fenster über Ziehereignisse, indem eine Ziehlistenmeldung gesendet wird. Das übergeordnete Fenster muss die Ziehlistenmeldung verarbeiten.
Das Ziehlistenfeld registriert diese Meldung, wenn die MakeDragList-Funktion aufgerufen wird. Um den Nachrichtenbezeichner (numerischer Wert) der Ziehlistennachricht abzurufen, rufen Sie die RegisterWindowMessage-Funktion auf, und geben Sie den Wert DRAGLISTMSGSTRING an.
Der wParam-Parameter der Ziehlistenmeldung ist der Steuerelementbezeichner für das Ziehlistenfeld. Der lParam-Parameter ist die Adresse einer DRAGLISTINFO-Struktur, die den Benachrichtigungscode für das Ziehereignis und andere Informationen enthält. Der Rückgabewert der Nachricht hängt von der Benachrichtigung ab.
Benachrichtigungscodes für Das Listenfeld ziehen
Der Benachrichtigungscode für die Ziehliste, der durch den uNotification-Member der DRAGLISTINFO-Struktur identifiziert wird, der in der Ziehlistenmeldung enthalten ist, kann DL _ BEGINDRAG, DL _ DRAGGING, DL _ CANCELDRAGoder DL _ DROPPEDsein.
Der DL _ BEGINDRAG-Benachrichtigungscode wird gesendet, wenn sich der Cursor auf einem Listenelement befindet und der Benutzer auf die linke Maustaste klickt. Das übergeordnete Fenster kann TRUE zurückgeben, um den Ziehvorgang zu starten, oder FALSE, um ziehen zu lassen. Auf diese Weise kann das übergeordnete Fenster das Ziehen für einige Listenelemente aktivieren und für andere deaktivieren. Sie können bestimmen, welches Listenelement sich am angegebenen Speicherort befindet, indem Sie die LBItemFromPt-Funktion verwenden.
Wenn das Ziehen wirksam ist, wird der DL DRAGGING-Benachrichtigungscode _ gesendet, wenn die Maus bewegt wird, oder in regelmäßigen Abständen, wenn die Maus nicht verschoben wird. Das übergeordnete Fenster sollte zunächst das Listenelement unter dem Cursor mithilfe von LBItemFromPt bestimmen und dann das Einfügesymbol mithilfe der DrawInsert-Funktion zeichnen. Durch Angabe von TRUE für den bAutoScroll-Parameter von LBItemFromPt können Sie bewirken, dass das Listenfeld um eine Zeile scrollt, wenn sich der Cursor oberhalb oder unterhalb des Clientbereichs befindet. Der Wert, den Sie für diese Benachrichtigung zurückgeben, gibt den Typ des Mauszeigers an, den das Ziehlistenfeld festlegen soll.
Der DL _ CANCELDRAG-Benachrichtigungscode wird gesendet, wenn der Benutzer einen Ziehvorgang durch Klicken mit der rechten Maustaste oder Drücken der ESC-Taste abbricht. Der DL DROPPED-Benachrichtigungscode _ wird gesendet, wenn der Benutzer einen Ziehvorgang durch Loslassen der linken Maustaste abschließt, auch wenn sich der Cursor nicht über einem Listenelement befindet. Das Ziehlistenfeld gibt die Mauserfassung frei, bevor eine der beiden Benachrichtigungen gesendet wird. Der Rückgabewert dieser beiden Benachrichtigungen wird ignoriert. Liste ziehen