Condividi tramite


Metodo IDCompositionVisual::AddVisual (dcomp.h)

Aggiunge un nuovo oggetto visivo figlio all'elenco figlio di questo oggetto visivo.

Sintassi

HRESULT AddVisual(
  [in]           IDCompositionVisual *visual,
  [in]           BOOL                insertAbove,
  [in, optional] IDCompositionVisual *referenceVisual
);

Parametri

[in] visual

Tipo: IDCompositionVisual*

Oggetto visivo figlio da aggiungere. Questo parametro non deve essere NULL.

[in] insertAbove

Tipo: BOOL

TRUE per posizionare il nuovo oggetto visivo figlio davanti all'oggetto visivo specificato dal parametro referenceVisual o FALSE per posizionarlo dietro referenceVisual.

[in, optional] referenceVisual

Tipo: IDCompositionVisual*

Oggetto visivo figlio esistente accanto al quale deve essere aggiunto il nuovo oggetto visivo.

Valore restituito

Tipo: HRESULT

Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT . Per un elenco di codici di errore, vedere Codici di errore DirectComposition .

Commenti

Gli oggetti visivi figlio sono disposti in un elenco ordinato. Il contenuto di un oggetto visivo figlio viene disegnato davanti (o sopra) il contenuto dell'oggetto visivo padre, ma dietro (o sotto) il contenuto dei relativi elementi figlio.

Il parametro referenceVisual deve essere un elemento figlio dell'oggetto visivo padre oppure deve essere NULL. Il parametro insertAbove indica se il nuovo elemento figlio deve essere eseguito immediatamente sopra l'oggetto visivo di riferimento nell'ordine Z o immediatamente sotto di esso.

Se il parametro referenceVisual è NULL, l'oggetto visivo specificato viene eseguito sopra o sotto tutti gli elementi figlio dell'oggetto visivo padre, a seconda del valore del parametro insertAbove . Se insertAbove è TRUE, il nuovo oggetto visivo figlio è superiore a nessun fratello, pertanto viene eseguito il rendering sotto tutti i suoi fratelli. Al contrario, se insertAbove è FALSE, l'oggetto visivo è inferiore a nessun fratello, pertanto viene eseguito il rendering soprattutto di tutti i suoi fratelli.

L'oggetto visivo specificato dal parametro visivo non può essere un elemento figlio di un singolo oggetto visivo o la radice di un albero visivo associato a una destinazione di composizione. Se l'oggetto visivo è già figlio di un altro oggetto visivo, AddVisual ha esito negativo. L'oggetto visivo figlio deve essere rimosso dall'elenco figlio del padre precedente prima di aggiungerlo all'elenco figlio del nuovo padre. Se l'oggetto visivo è la radice di un albero visivo, l'oggetto visivo deve essere dissociato dall'albero visivo prima di aggiungerlo all'elenco figlio del nuovo padre. Per separare l'oggetto visivo da un albero visivo, chiamare il metodo IDCompositionTarget::SetRoot e specificare un oggetto visivo o NULL diverso come parametro visivo .

Un oggetto visivo figlio non deve essere stato creato dalla stessa interfaccia IDCompositionDevice del relativo padre. Quando gli oggetti visivi provenienti da dispositivi diversi vengono combinati nello stesso albero visivo, Microsoft DirectComposition compone l'albero come normalmente sarebbe, tranne che le modifiche apportate a un oggetto visivo specifico si applicano solo quando IDCompositionDevice::Commit viene chiamato sull'oggetto dispositivo che ha creato l'oggetto visivo. La possibilità di combinare oggetti visivi da dispositivi diversi consente a più thread di creare e modificare un singolo albero visivo mantenendo dispositivi indipendenti che possono essere usati per eseguire il commit delle modifiche in modo asincrono

Questo metodo ha esito negativo se l'oggetto visivo o referenceVisual è un puntatore non valido oppure se l'oggetto visivo a cui fa riferimento il parametro referenceVisual non è figlio dell'oggetto visivo padre. Queste interfacce non possono essere implementazioni personalizzate; solo le interfacce create da DirectComposition possono essere usate con questo metodo.

Esempio

Per un esempio, vedere Come creare un albero visivo semplice.

Requisiti

   
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione dcomp.h
Libreria Dcomp.lib
DLL Dcomp.dll

Vedi anche

IDCompositionDevice::CreateVisual

IDCompositionTarget::SetRoot

IDCompositionVisual

IDCompositionVisual::RemoveAllVisuals

IDCompositionVisual::RemoveVisual