Bagikan melalui


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
OLE_E_NESTEDPAINT
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:
  1. Di layar, Satu Gambar Pass
    1. Dalam metode IOleInPlaceSiteWindowless::GetDC , kontainer harus:
      • Dapatkan konteks perangkat jendela.
      • Jika OLEDC_PAINTBKGND diatur, gambar DVASPECT_CONTENT aspek setiap objek di belakang objek yang meminta konteks perangkat.
      • Mengembalikan konteks perangkat.
    2. Dalam metode ReleaseDC , kontainer harus:
      • Gambar DVASPECT_CONTENT dari setiap objek yang tumpang tindih.
      • Merilis konteks perangkat.
  2. Di layar, Gambar Dua Pass
    1. 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.
    2. Dalam metode IOleInPlaceSiteWindowless::ReleaseDC , kontainer harus:
      • Gambar bagian transparan dari setiap objek yang tumpang tindih.
      • Merilis konteks perangkat.
  3. Gambar Di Luar Layar
    1. 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.
    2. 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.
Ketika metode ini kembali, wilayah kliping dalam konteks perangkat harus diatur sehingga objek tidak dapat melukis di area mana pun yang tidak seharusnya. Jika objek tidak buram, latar belakang seharusnya dicat. Jika konteks perangkat adalah layar, area buram yang tumpang tindih harus dipotong.

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

Lihat juga

IOleInPlaceSiteWindowless

IOleInPlaceSiteWindowless::ReleaseDC

OLEDCFLAGS