IDCompositionDevice::CreateTargetForHwnd method (dcomp.h)
Membuat objek target komposisi yang terikat ke jendela yang diwakili oleh handel jendela (HWND) yang ditentukan.
Sintaks
HRESULT CreateTargetForHwnd(
[in] HWND hwnd,
[in] BOOL topmost,
[out] IDCompositionTarget **target
);
Parameter
[in] hwnd
Jenis: HWND
Jendela tempat objek target komposisi harus terikat. Parameter ini tidak boleh NULL.
[in] topmost
Jenis: BOOL
TRUE jika pohon visual harus ditampilkan di atas anak-anak jendela yang ditentukan oleh parameter hwnd ; jika tidak, pohon visual ditampilkan di belakang anak-anak.
[out] target
Jenis: IDCompositionTarget**
Objek target komposisi baru. Parameter ini tidak boleh NULL.
Menampilkan nilai
Jenis: HRESULT
Jika fungsi berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan. Lihat Kode Kesalahan DirectComposition untuk daftar kode kesalahan.
Keterangan
Pohon visual Microsoft DirectComposition harus terikat ke jendela sebelum apa pun dapat ditampilkan di layar. Jendela dapat berupa jendela tingkat atas atau jendela anak. Dalam kedua kasus, jendela dapat menjadi jendela berlapis, tetapi dalam semua kasus jendela harus termasuk dalam proses panggilan. Jika jendela termasuk dalam proses yang berbeda, metode ini mengembalikan DCOMPOSITION_ERROR_ACCESS_DENIED.
Ketika konten DirectComposition terdiri ke jendela, konten selalu terdiri di atas apa pun yang digambar langsung ke jendela tersebut melalui konteks perangkat (HDC) yang dikembalikan oleh fungsi GetDC , atau dengan panggilan ke metode Microsoft DirectX Present . Namun, karena aturan kliping jendela berlaku untuk konten DirectComposition, jika jendela memiliki jendela anak, jendela anak tersebut dapat mengklip pohon visual. Parameter paling atas menentukan apakah jendela anak mengklip pohon visual.
Secara konseptual, setiap jendela terdiri dari empat lapisan:
- Konten yang digambar langsung ke gagang jendela (ini adalah lapisan terbawah).
- Pohon visual DirectComposition opsional.
- Isi semua jendela anak, jika ada.
- Pohon visual DirectComposition opsional lainnya (ini adalah lapisan paling atas).
Paling banyak, hanya dua target komposisi yang dapat dibuat untuk setiap jendela dalam sistem, satu paling atas dan satu tidak paling atas. Jika target komposisi sudah terikat ke jendela yang ditentukan pada lapisan yang ditentukan, metode ini gagal. Ketika objek target komposisi dihancurkan, lapisan yang disusurnya tersedia untuk digunakan oleh objek target komposisi baru.
Contoh
Contoh berikut membuat dan menginisialisasi objek perangkat, lalu mengikat objek perangkat ke jendela target komposisi.
#include <dcomp.h>
#include <d3d11.h>
HRESULT InitializeDirectCompositionDevice(HWND hwndTarget,
ID3D11Device **ppD3D11Device, IDCompositionDevice **ppDevice,
IDCompositionTarget **ppCompTarget)
{
HRESULT hr = S_OK;
D3D_FEATURE_LEVEL featureLevelSupported;
IDXGIDevice *pDXGIDevice = nullptr;
// Verify that the arguments are valid.
if (hwndTarget == NULL || ppD3D11Device == nullptr || ppDevice == nullptr ||
ppCompTarget == nullptr)
{
return E_INVALIDARG;
}
// Create the D3D device object. Note that the
// D3D11_CREATE_DEVICE_BGRA_SUPPORT flag is needed for rendering
// on surfaces using Direct2D.
hr = D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_HARDWARE,
NULL,
D3D11_CREATE_DEVICE_BGRA_SUPPORT, // needed for rendering on surfaces using Direct2D
NULL,
0,
D3D11_SDK_VERSION,
ppD3D11Device,
&featureLevelSupported,
NULL);
if (SUCCEEDED(hr))
{
// Create the DXGI device used to create bitmap surfaces.
hr = (*ppD3D11Device)->QueryInterface(&pDXGIDevice);
}
if (SUCCEEDED(hr))
{
// Create the DirectComposition device object.
hr = DCompositionCreateDevice(pDXGIDevice, __uuidof(IDCompositionDevice),
reinterpret_cast<void **>(ppDevice));
}
if (SUCCEEDED(hr))
{
// Bind the DirectComposition device to the target window.
hr = (*ppDevice)->CreateTargetForHwnd(hwndTarget, TRUE, ppCompTarget);
}
return hr;
}
Persyaratan
Klien minimum yang didukung | Windows 8 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2012 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | dcomp.h |
Pustaka | Dcomp.lib |
DLL | Dcomp.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk