Server: Item Server
Saat kontainer meluncurkan server sehingga pengguna dapat mengedit item OLE yang disematkan atau ditautkan, aplikasi server membuat "item server." Item server, yang merupakan objek kelas yang berasal dari COleServerItem
, menyediakan antarmuka antara dokumen server dan aplikasi kontainer.
Kelas COleServerItem
mendefinisikan beberapa fungsi anggota yang dapat diambil alih yang dipanggil oleh OLE, biasanya sebagai respons terhadap permintaan dari kontainer. Item server dapat mewakili bagian dari dokumen server atau seluruh dokumen. Ketika item OLE disematkan dalam dokumen kontainer, item server mewakili seluruh dokumen server. Ketika item OLE ditautkan, item server dapat mewakili bagian dari dokumen server atau seluruh dokumen, tergantung pada apakah tautan ke bagian atau ke seluruhnya.
Dalam sampel HIERSVR, misalnya, kelas item server, CServerItem
, memiliki anggota yang merupakan penunjuk ke objek kelas CServerNode
. Objek CServerNode
adalah simpul dalam dokumen aplikasi HIERSVR, yang merupakan pohon. CServerNode
Ketika objek adalah simpul akar, CServerItem
objek mewakili seluruh dokumen. CServerNode
Ketika objek adalah simpul anak, CServerItem
objek mewakili bagian dari dokumen. Lihat sampel OLE MFC HIERSVR untuk contoh interaksi ini.
Menerapkan Item Server
Jika Anda menggunakan wizard aplikasi untuk menghasilkan kode "pemula" untuk aplikasi Anda, yang harus Anda lakukan untuk menyertakan item server dalam kode pemula Anda adalah memilih salah satu opsi server dari halaman Opsi OLE. Jika Anda menambahkan item server ke aplikasi yang sudah ada, lakukan langkah-langkah berikut:
Untuk mengimplementasikan item server
Mendapatkan kelas dari
COleServerItem
.Di kelas turunan Anda, ambil alih
OnDraw
fungsi anggota.Kerangka kerja memanggil
OnDraw
untuk merender item OLE ke dalam metafile. Aplikasi kontainer menggunakan metafile ini untuk merender item. Kelas tampilan aplikasi Anda juga memilikiOnDraw
fungsi anggota, yang digunakan untuk merender item saat aplikasi server aktif.Terapkan penimpaan
OnGetEmbeddedItem
untuk kelas dokumen server Anda. Untuk informasi selengkapnya, lihat artikel Server: Menerapkan Dokumen Server dan sampel OLE MFC HIERSVR.Terapkan fungsi anggota kelas
OnGetExtent
item server Anda. Kerangka kerja memanggil fungsi ini untuk mengambil ukuran item. Implementasi default tidak melakukan apa pun.
Tips untuk Arsitektur Item Server
Seperti yang disebutkan dalam Menerapkan Item Server, aplikasi server harus dapat merender item baik dalam tampilan server maupun dalam metafile yang digunakan oleh aplikasi kontainer. Dalam arsitektur aplikasi Pustaka Kelas Microsoft Foundation, fungsi anggota kelas OnDraw
tampilan merender item saat sedang diedit (lihat CView::OnDraw di Referensi Pustaka Kelas). Item OnDraw
server merender item ke dalam metafile dalam semua kasus lain (lihat COleServerItem::OnDraw).
Anda dapat menghindari duplikasi kode dengan menulis fungsi pembantu di kelas dokumen server Anda dan memanggilnya dari OnDraw
fungsi dalam tampilan dan kelas item server Anda. Sampel MFC OLE HIERSVR menggunakan strategi ini: fungsi CServerView::OnDraw
dan CServerItem::OnDraw
panggilan CServerDoc::DrawTree
untuk merender item.
Tampilan dan item keduanya memiliki OnDraw
fungsi anggota karena menggambar dalam kondisi yang berbeda. Tampilan harus mempertimbangkan faktor-faktor seperti memperbesar tampilan, ukuran dan jangkauan pilihan, kliping, dan elemen antarmuka pengguna seperti bilah gulir. Item server, di sisi lain, selalu menggambar seluruh objek OLE.
Untuk informasi selengkapnya, lihat CView::OnDraw, COleServerItem, COleServerItem::OnDraw, dan COleServerDoc::OnGetEmbeddedItem di Referensi Pustaka Kelas.