Representasi Visual

Kontrol mendukung pemosisian dan menampilkan dirinya sendiri dalam kontainernya melalui teknologi dokumen campuran dan teknologi seret dan lepas OLE yang melibatkan kontrol dan kontainernya. Kontrol harus dapat menggambar dirinya sendiri sementara kontainer mengelola posisi kontrol dan ukurannya.

Kontrol ditambahkan ke fungsi dasar yang disediakan oleh dokumen OLE. Kontrol memanggil metode IOleClientSite::RequestNewObjectLayout kliennya untuk memberi tahu kontainernya bahwa ia ingin mengubah ukurannya. Klien memanggil IOleObject::GetExtent kontrol untuk mendapatkan ukuran baru dan memanggil IOleInPlaceObject::SetObjectRects untuk mengatur kontrol ke ukuran barunya.

Kontrol yang hanya mendukung IPersistStream atau IPersistStreamInit tidak mendukung penembolokan melalui IOleCache2 karena cache memerlukan dukungan untuk IPersistStorage. Namun, kontrol ini harus menyediakan cara bagi klien untuk merender kontrol melalui IDataObject::GetData sehingga klien dapat secara opsional membuat dan mengelola cache sendiri dari data presentasi untuk kontrol.

Kontrol menggunakan jenis HIMETRIC untuk koordinatnya. Namun, kontainer yang berbeda dapat menggunakan sistem koordinat yang berbeda. Kontainer ingin menerima koordinat dalam sistemnya sendiri, tetapi kontrol tidak selalu mengetahui koordinat apa yang digunakan kontainernya. Agar berhasil berkomunikasi, kontrol memerlukan cara untuk mengonversi nilai ke koordinat kontainernya. Kontainer menyediakan objek situs dengan metode IOleControlSite::TransformCoords. Kontrol memanggil metode ini di situs klien kontainernya terlebih dahulu untuk mengonversi koordinatnya menjadi koordinat yang sesuai untuk kontainer. Kemudian, ia dapat meneruskan koordinat yang dikonversi ke kontainer.

Kontrol dapat memanggil IOleControlSite::LockInPlaceActive di objek situs kontainer untuk mencegah kontainer mencoba menurunkan kontrol dari status aktif di tempat. Menurunkan kontrol dengan cara ini menyebabkan kontrol dinonaktifkan dan jendelanya dihancurkan, jadi jika kontrol harus mempertahankan jendelanya selama durasi yang diketahui, kontrol dapat memanggil LockInPlaceActive untuk menjamin statusnya.

Kontrol ActiveX