TVN _ ASYNCDRAW-Benachrichtigungscode
Wird von einem Strukturansicht-Steuerelement an das übergeordnete Element gesendet, wenn das Zeichnen eines Symbols oder einer Überlagerung fehlgeschlagen ist. Dieser Benachrichtigungscode wird in Form einer WM _ NOTIFY-Nachricht gesendet.
TVN_ASYNCDRAW
pnmTVAsynchDraw = (NMTVASYNCDRAW *) lParam;
Parameter
-
lParam
-
Zeiger auf eine NMTVASYNCDRAW-Struktur. Die NMTVASYNCDRAW-Struktur enthält den Grund für den Fehler beim Zeichnen.
Rückgabewert
Kein Rückgabewert.
Bemerkungen
Das Strukturansicht-Steuerelement muss über den erweiterten TVS _ EX _ DRAWIMAGEASYNC-Stil verfügen. Beachten Sie, dass dies dem LVN ASYNCDRAWN-Flag der Listenansicht und dem _ entsprechenden Stil entspricht.
Dieses Steuerelement wird nicht asynchron ge zeichnen. Asynchron wird in dem Kontext verwendet, in dem das Strukturansicht-Steuerelement ein Bild nicht synchron extrahiert, wenn es nicht verfügbar ist. (Beispielsweise ist das Bild möglicherweise nicht verfügbar, wenn das Strukturansicht-Steuerelement eine Sparsebildliste verwendet, da das Bild entladen werden kann.) Wenn ein Bild nicht verfügbar ist, fragt das Steuerelement das übergeordnete Element stattdessen synchron, welche Aktion ausgeführt werden soll, indem es dem übergeordneten Element eine TVN _ ASYNCDRAW-Benachrichtigung mit einer NMTVASYNCDRAW-Struktur sendet. Der hr-Member dieser -Struktur beschreibt den Grund für den Fehler beim Zeichnen des Steuerelements. Ein Hr-Ergebnis von E PENDING bedeutet, dass das Bild überhaupt nicht vorhanden _ ist (das Bild muss extrahiert werden). Erfolg gibt an, dass das Bild vorhanden ist, aber nicht mit der erforderlichen Imagequalität.
Das übergeordnete Element legt das dwRetFlags-Element der -Struktur fest, um das Steuerelement darüber zu informieren, wie fortzufahren ist. Beispielsweise kann das übergeordnete Element ein anderes Bild im iRetImageIndex-Element zurückgeben, damit das Steuerelement ge drawt werden kann. In diesem Fall legt das übergeordnete Element das dwRetFlags-Element auf ADRF _ DRAWIMAGE fest. Wenn das Steuerelement ermittelt, dass das zurückgegebene Bild nicht extrahiert wurde, kann das Steuerelement eine weitere _ TVN-ASYNCDRAW-Benachrichtigung senden.
Wenn ein Bild nicht verfügbar ist, ist die Idee hinter asynchron, dem übergeordneten Element die Extraktion im Hintergrund zu ermöglichen, damit die Extraktion den UI-Thread nicht blockiert, d.&a0;b. den Thread, in dem sich das Steuerelement befindet. Das übergeordnete Element kann ADRF DRAWNOTHING an das Steuerelement zurückgeben und dann einen _ Hintergrundthread starten, um das Symbol zu extrahieren. Nach der Extraktion kann das übergeordnete Element das Symbol im Treeview-Steuerelement mit dem Makro TreeView _ SetItem festlegen. Dies führt dazu, dass die Strukturansicht das Element ungültig macht und es schließlich mit dem extrahierten Bild in der Bildliste neu anpaint.
Das folgende Codebeispiel, das als Teil eines größeren Programms verwendet werden soll, zeigt, wie ein übergeordnetes Element zwei mögliche Rückgabecodes in dieser Benachrichtigung durch ein -Steuerelement verarbeiten und entscheiden kann, welche Aktion das Steuerelement ausführen soll. Das Festlegen von dwRetFlags wird nicht angezeigt.
case TVN_ASYNCDRAW:
NMTVASYNCDRAW *pnm = (NMTVASYNCDRAW *)lParam
short dwDrawSuccessFlags = ShortFromResult(pnm->hr);
if (dwDrawSuccessFlags & ILDRF_IMAGELOWQUALITY)
{
// Need to re-extract the icon
}
if (dwDrawSuccessFlags & ILDRF_OVERLAYLOWQUALITY)
{
// Need to re-extract the overlay
}
Requirements (Anforderungen)
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
Windows Nur [ Vista-Desktop-Apps] |
| Unterstützte Mindestversion (Server) |
Windows Nur Server [ 2008-Desktop-Apps] |
| Header |
|