Verarbeitung der WM_DRAWITEM Nachricht

Ein Ownerdrawn-Kombinationsfeld sendet die WM_DRAWITEM Nachricht an sein übergeordnetes Fenster oder Dialogfeld Feld Verfahren jedes Mal, wenn die Anwendung ein Listenelement aktualisieren muss. Der lParam -Parameter verweist auf eine DRAWITEMSTRUCT -Struktur, die das Kontrolle und Liste Element identifiziert. Es enthält auch Informationen, die erforderlich, um das Element zu zeichnen.

Das Beispiel in Erstellen eines Dialogfelds Square Meal zeigt die List-Item-Text und die Bitmap der Lebensmittelgruppe zugeordnet. Wenn das Element den Fokus hat, zieht es auch ein Fokus-Rechteck. Bevor den Text angezeigt, wird im Beispiel die Vordergrund- und Hintergrundfarben Farben, basierend auf das ausgewählte Element. Da das Kombinationsfeld im CBS_HASSTRINGS-Stil hat, unterhält das Kombinationsfeld den Text für jedes Listenelement, das mit die CB_GETLBTEXT -Nachricht abgerufen werden können.

Die Bitmaps für die Liste verwendet, hängt von der Lebensmittelgruppe. InitGroupListverwendet die CB_SETITEMDATA -Nachricht um eine Konstante jedes Listenelement, die Identifizierung der entsprechenden Lebensmittelgruppe zuzuordnen. Die Fensterprozedur verwendet diesen Wert, enthalten in den ItemData -Member der DRAWITEMSTRUCT -Struktur, um zu bestimmen, welche Bitmaps angezeigt. Das System verwendet zwei Bitmaps für jedes Lebensmittel-Gruppe Symbol: eine monochrome Bitmap mit der SRCAND RasterOperation die unregelmäßige Region hinter dem Bild löschen und eine Farbbitmap mit SRCPAINT Raster, das Bild zu malen.