Moniker Item
Kelas moniker lain yang diimplementasikan OLE adalah moniker item, yang dapat digunakan untuk mengidentifikasi objek yang terkandung dalam objek lain. Salah satu jenis objek yang terkandung adalah objek OLE yang disematkan dalam dokumen majemuk. Dokumen majemuk dapat mengidentifikasi objek tersemat yang dikandungnya dengan menetapkan masing-masing satu nama arbitrer, seperti "embedobj1," "embedobj2," dan sebagainya. Jenis objek terkandung lainnya adalah pilihan pengguna dalam dokumen, seperti rentang sel dalam lembar bentang atau rentang karakter dalam dokumen teks. Objek yang terdiri dari pilihan disebut objek pseudo karena tidak diperlakukan sebagai objek yang berbeda hingga pengguna menandai pilihan. Spreadsheet mungkin mengidentifikasi rentang sel menggunakan nama seperti "1A:7F", sementara dokumen pemrosesan kata mungkin mengidentifikasi rentang karakter menggunakan nama marka buku.
Moniker item berguna terutama saat digabungkan, atau dibuat, dengan moniker lain, yang mengidentifikasi kontainer. Moniker item biasanya dibuat dan kemudian disusur ke (misalnya) moniker file untuk membuat jalur lengkap yang setara dengan objek. Misalnya, Anda dapat menyusun file moniker "c:\work\report.doc" (yang mengidentifikasi objek kontainer) dengan item moniker "embedobj1" (yang mengidentifikasi objek dalam kontainer) untuk membentuk moniker "c:\work\report.doc\embedobj1," yang secara unik mengidentifikasi objek tertentu dalam file tertentu. Anda juga dapat menggabungkan moniker item tambahan untuk mengidentifikasi objek berlapis dalam. Misalnya, jika "embedobj1" adalah nama objek spreadsheet, untuk mengidentifikasi rentang sel tertentu dalam objek spreadsheet tersebut, Anda dapat menambahkan moniker item lain untuk membuat moniker yang setara dengan "c:\work\report.doc\embedobj1\1A:7F."
Saat dikombinasikan dengan moniker file, item moniker membentuk jalur lengkap. Moniker item dengan demikian memperluas gagasan nama jalur di luar sistem file, menentukan nama jalur untuk mengidentifikasi objek individual, bukan hanya file.
Ada perbedaan signifikan antara moniker item dan moniker file. Jalur yang terkandung dalam moniker file bermakna bagi siapa pun yang memahami sistem file, sementara jalur parsial yang terkandung dalam moniker item bermakna hanya untuk kontainer tertentu. Semua orang tahu apa yang dimaksud dengan "c:\work\report.doc", tetapi hanya satu objek kontainer tertentu yang tahu apa yang dimaksud dengan "1A:7F". Satu kontainer tidak dapat menginterpretasikan moniker item yang dibuat oleh aplikasi lain; satu-satunya kontainer yang mengetahui objek mana yang dirujuk oleh moniker item adalah kontainer yang menetapkan moniker item ke objek di tempat pertama. Untuk alasan ini, sumber objek yang dinamai dengan kombinasi file dan moniker item tidak hanya boleh mengimplementasikan IPersistFile, untuk memfasilitasi pengikatan moniker file, tetapi juga IOleItemContainer untuk memfasilitasi penyelesaian nama item moniker ke dalam objek yang sesuai, dalam konteks file.
Keuntungan dari moniker adalah bahwa seseorang yang menggunakan moniker untuk menemukan objek tidak perlu memahami nama yang terkandung dalam item moniker, selama item moniker adalah bagian dari komposit. Umumnya, tidak masuk akal bagi moniker item untuk ada sendiri. Sebagai gantinya, Anda akan membuat item moniker ke moniker file. Anda kemudian akan memanggil IMoniker::BindToObject di komposit, yang mengikat moniker individu di dalamnya, menafsirkan nama.
Untuk membuat objek moniker item dan mengembalikan penunjuknya ke penyedia moniker, OLE menyediakan fungsi pembantu CreateItemMoniker. Fungsi ini membuat objek moniker item dan mengembalikan penunjuknya ke penyedia.
Topik terkait