Metodo IDXGISurface1::GetDC (dxgi.h)

Restituisce un contesto di dispositivo (DC) che consente di eseguire il rendering in una superficie DXGI (Microsoft DirectX Graphics Infrastructure) tramite Windows Graphics Device Interface (GDI).

Sintassi

HRESULT GetDC(
        BOOL Discard,
  [out] HDC  *phdc
);

Parametri

Discard

Tipo: BOOL

Valore booleano che specifica se mantenere il contenuto direct3D nel controller di dominio GDI. TRUE indica al runtime di non mantenere il contenuto Direct3D nel controller di dominio GDI; ovvero, il runtime elimina il contenuto direct3D. FALSE garantisce che il contenuto di Direct3D sia disponibile nel controller di dominio GDI.

[out] phdc

Tipo: HDC*

Puntatore a un handle HDC che rappresenta il contesto di dispositivo corrente per il rendering GDI.

Valore restituito

Tipo: HRESULT

Restituisce S_OK in caso di esito positivo; in caso contrario, un codice di errore.

Commenti

Questo metodo non è supportato da DXGI 1.0, fornito in Windows Vista e Windows Server 2008. È necessario il supporto DXGI 1.1, disponibile in Windows 7, Windows Server 2008 R2 e come aggiornamento a Windows Vista con Service Pack 2 (SP2) (KB 971644) e Windows Server 2008 (KB 971512).

Dopo aver usato il metodo GetDC per recuperare un controller di dominio, è possibile eseguire il rendering sulla superficie DXGI usando GDI.
Il metodo GetDC legge la superficie per il rendering GDI e consente l'interoperazioni tra le tecnologie DXGI e GDI.

Quando si usa questo metodo, tenere presente quanto segue:

  • È necessario creare la superficie usando il flag D3D11_RESOURCE_MISC_GDI_COMPATIBLE per una superficie o usando il flag DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE per le catene di scambio. In caso contrario, questo metodo ha esito negativo.
  • È necessario rilasciare il dispositivo e chiamare il metodo IDXGISurface1::ReleaseDC prima di eseguire nuovi comandi Direct3D.
  • Questo metodo ha esito negativo se un controller di dominio in sospeso è già stato creato da questo metodo.
  • Il formato per la superficie o la catena di scambio deve essere DXGI_FORMAT_B8G8R8A8_UNORM_SRGB o DXGI_FORMAT_B8G8R8A8_UNORM.
  • In GetDC la destinazione di rendering nella fusione di output della pipeline Direct3D non è associato dalla superficie. È necessario chiamare il metodo ID3D11DeviceContext::OMSetRenderTargets nel dispositivo prima del rendering Direct3D dopo il rendering GDI.
  • Prima di ridimensionare i buffer, è necessario rilasciare tutti i controller di dominio in sospeso.
È anche possibile chiamare GetDC nel buffer nascosto in corrispondenza dell'indice 0 di una catena di scambio ottenendo un IDXGISurface1 dalla catena di scambio. Il codice seguente illustra il processo.

IDXGISwapChain* g_pSwapChain = NULL;
IDXGISurface1* g_pSurface1 = NULL;
...
//Setup the device and the swapchain
g_pSwapChain->GetBuffer(0, __uuidof(IDXGISurface1), (void**) &g_pSurface1);
g_pSurface1->GetDC( FALSE, &g_hDC );
...      
//Draw on the DC using GDI
...
//When finish drawing release the DC
g_pSurface1->ReleaseDC( NULL );
      

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione dxgi.h
Libreria DXGI.lib

Vedi anche

Interfacce DXGI

IDXGISurface1