TVN_ASYNCDRAW Benachrichtigungscode

Wird von einem Strukturansichtssteuerelement an das übergeordnete Steuerelement gesendet, wenn die Zeichnung 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, warum die Zeichnung fehlgeschlagen ist.

Rückgabewert

Kein Rückgabewert.

Bemerkungen

Das Steuerelement für die Strukturansicht muss über die TVS_EX_DRAWIMAGEASYNC erweiterten Formatvorlage verfügen. Beachten Sie, dass dies dem LVN_ASYNCDRAWN Flag und der entsprechenden Formatvorlage der Listenansicht entspricht.

Dieses Steuerelement zeichnet nicht asynchron. Asynchron wird im Kontext verwendet, in dem das Strukturansichtssteuerelement ein Bild nicht synchron extrahiert, wenn es nicht verfügbar ist. (Beispielsweise ist das Bild möglicherweise nicht verfügbar, wenn das Strukturansichtssteuerelement eine sparse Bildliste verwendet, da das Bild möglicherweise entladen wird.) Wenn ein Bild nicht verfügbar ist, fragt das Steuerelement das übergeordnete Steuerelement synchron, welche Aktion ausgeführt werden soll, indem das übergeordnete Element eine TVN_ASYNCDRAW Benachrichtigung mit einer NMTVASYNCDRAW-Struktur sendet. Das Hr-Element dieser Struktur beschreibt den Grund, warum die Zeichnung des Steuerelements fehlgeschlagen ist. Ein hr-Ergebnis von E_PENDING bedeutet, dass das Bild überhaupt nicht vorhanden ist (das Bild muss extrahiert werden). Der Erfolg gibt an, dass das Bild vorhanden ist, aber nicht bei der erforderlichen Bildqualität.

Das übergeordnete Element legt das dwRetFlags-Element der Struktur fest, um das Steuerelement darüber zu informieren, wie sie fortfahren. Beispielsweise kann das übergeordnete Element ein anderes Bild im iRetImageIndex-Element zurückgeben, damit das Steuerelement zeichnen kann. In diesem Fall legt das übergeordnete Element das dwRetFlags-Element auf ADRF_DRAWIMAGE fest. Wenn das Steuerelement findet, dass das zurückgegebene Bild nicht extrahiert wurde, kann noch eine weitere TVN_ASYNCDRAW Benachrichtigung vom Steuerelement gesendet werden.

Wenn ein Bild nicht verfügbar ist, ist die Idee hinter asynchron, die übergeordnete Extraktion im Hintergrund zuzulassen, sodass die Extraktion den UI-Thread nicht blockiert, also der Thread, auf dem das Steuerelement aktiviert ist. Das übergeordnete Element kann ADRF_DRAWNOTHING an das Steuerelement zurückgeben und dann einen Hintergrundthread starten, um das Symbol zu extrahieren. Nach dem Extrahieren kann das übergeordnete Element das Symbol im Strukturansicht-Steuerelement mit Makro-TreeView_SetItem festlegen. Dies bewirkt, dass die Strukturansicht das Element ungültig macht und es schließlich mit dem extrahierten Bild in der Bildliste neu erstellen kann.

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 kann, und entscheiden, welche Aktion das Steuerelement ergreifen 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 Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2008 [Nur Desktop-Apps]
Header
Commctrl.h