Metode IOleInPlaceSiteWindowless::GetDC (ocidl.h)
Menyediakan objek dengan handel ke konteks perangkat untuk layar atau perangkat yang kompatibel dari kontainernya.
Sintaks
HRESULT GetDC(
[in] LPCRECT pRect,
[in] DWORD grfFlags,
[out] HDC *phDC
);
Parameter
[in] pRect
Penunjuk ke persegi panjang yang ingin digambar ulang objek, dalam koordinat klien dari jendela yang berisi. Jika parameter ini NULL, tingkat penuh objek akan digambar ulang.
[in] grfFlags
Kombinasi nilai dari enumerasi OLEDCFLAGS .
[out] phDC
Penunjuk ke konteks perangkat yang dikembalikan.
Nilai kembali
Metode ini mengembalikan S_OK pada keberhasilan. Kemungkinan nilai pengembalian lainnya termasuk yang berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
Kontainer sudah berada di tengah sesi cat. Artinya, metode ini telah dipanggil, dan metode IOleInPlaceSiteWindowless::ReleaseDC belum dipanggil. |
Keterangan
Konteks perangkat yang diperoleh dengan metode ini harus dirilis dengan memanggil IOleInPlaceSiteWindowless::ReleaseDC.
Seperti metode lain dalam antarmuka ini, persegi panjang ditentukan dalam koordinat klien dari jendela yang berisi. Kontainer diharapkan untuk berpotongan persegi panjang ini dengan persegi panjang situs objek dan memotong semuanya di luar persegi panjang yang dihasilkan. Ini mencegah objek menggambar secara tidak sengaja di mana objek tersebut tidak seharusnya.
Kontainer juga diharapkan untuk memetakan asal konteks perangkat sehingga objek dapat menggambar koordinat klien dari jendela yang berisi, biasanya jendela kontainer. Jika kontainer hanya meneruskan konteks perangkat jendelanya, ini terjadi secara otomatis. Jika mengembalikan konteks perangkat lain, misalnya, konteks perangkat memori di luar layar, maka asal viewport harus diatur dengan tepat.
Catatan untuk Pelaksana
Tergantung apakah itu mengembalikan konteks perangkat di layar atau di luar layar dan tergantung pada seberapa canggihnya itu, kontainer dapat menggunakan salah satu algoritma berikut:-
Di layar, Satu Gambar Pass
- Dalam metode IOleInPlaceSiteWindowless::GetDC , kontainer harus:
- Dalam metode ReleaseDC , kontainer harus:
- Gambar DVASPECT_CONTENT dari setiap objek yang tumpang tindih.
- Merilis konteks perangkat.
-
Di layar, Gambar Dua Pass
- Dalam metode IOleInPlaceSiteWindowless::GetDC , kontainer harus:
- Dapatkan konteks perangkat jendela.
- Klip wilayah buram dari objek yang tumpang tindih. Wilayah ini tidak perlu digambar ulang karena sudah benar di layar.
- Jika OLEDC_PAINTBKGND tidak diatur, kembalikan konteks perangkat.
- Jika tidak, klip bagian buram objek yang meminta konteks perangkat dan gambar bagian buram dari setiap objek di belakangnya ke depan ke belakang.
- Gambar aspek transparan dari setiap objek di belakang kembali ke depan, atur wilayah kliping dengan tepat setiap kali.
- Akhirnya kembalikan konteks perangkat.
- Dalam metode IOleInPlaceSiteWindowless::ReleaseDC , kontainer harus:
- Gambar bagian transparan dari setiap objek yang tumpang tindih.
- Merilis konteks perangkat.
- Dalam metode IOleInPlaceSiteWindowless::GetDC , kontainer harus:
-
Gambar Di Luar Layar
- Dalam metode IOleInPlaceSiteWindowless::GetDC , kontainer harus:
- Buat konteks perangkat memori yang kompatibel dengan layar, yang berisi bitmap yang kompatibel dengan ukuran yang sesuai.
- Petakan asal viewport konteks perangkat untuk memastikan bahwa objek panggilan dapat menggambar menggunakan koordinat area klien dari jendela yang berisi.
- Jika OLEDC_PAINTBKGND diatur, gambar DVASPECT_CONTENT setiap objek di belakang objek panggilan.
- Mengembalikan konteks perangkat.
- Dalam metode IOleInPlaceSiteWindowless::ReleaseDC , kontainer harus:
- Gambar aspek DVASPECT_CONTENT dari setiap objek yang tumpang tindih.
- Salin bitmap di luar layar ke layar di lokasi objek panggilan yang awalnya diminta di IOleInPlaceSiteWindowless::GetDC.
- Hapus dan lepaskan konteks perangkat memori.
- Dalam metode IOleInPlaceSiteWindowless::GetDC , kontainer harus:
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | ocidl.h |