Menüler ve Kaynaklar: Menü Birleştirme
Bu makalede, OLE belge uygulamalarının görsel düzenlemeyi ve yerinde etkinleştirmeyi düzgün bir şekilde işlemesi için gereken adımlar ayrıntılı olarak açıklanır. Yerinde etkinleştirme hem kapsayıcı hem de sunucu (bileşen) uygulamaları için bir zorluk oluşturur. Kullanıcı aynı çerçeve penceresinde kalır (kapsayıcı belgesi bağlamında) ancak aslında başka bir uygulama (sunucu) çalıştırıyor. Bu, kapsayıcı ve sunucu uygulamalarının kaynakları arasında koordinasyon gerektirir.
Bu makalede ele alınan konular şunlardır:
Menü Düzenleri
İlk adım, menü düzenlerini koordine etmektir. Kapsayıcı uygulamaları, yalnızca eklenmiş öğeler yerinde etkinleştirildiğinde kullanılacak yeni bir menü oluşturmalıdır. En azından, bu menü listelenen sırayla aşağıdakilerden oluşmalıdır:
Dosya menüsü, dosyalar açıkken kullanılan menüyle aynıdır. (Genellikle bir sonraki öğeden önce başka menü öğesi yerleştirilmemiş olur.)
Ardışık iki ayırıcı.
Dosyalar açıkken kullanılan pencere menüsüyle aynıdır (yalnızca bir MDI uygulamasındaki kapsayıcı uygulaması varsa). Bazı uygulamalarda, bu gruba ait seçenekler menüsü gibi ekli bir öğe etkinleştirildiğinde menüde kalan başka menüler de olabilir.
Dekont
Kapsayıcı belgesinin görünümünü etkileyen Yakınlaştırma gibi başka menüler de olabilir. Bu kapsayıcı menüleri, bu menü kaynağındaki iki ayırıcı arasında görünür.
Sunucu (bileşen) uygulamaları da yerinde etkinleştirme için özel olarak yeni bir menü oluşturmalıdır. Dosyalar açıkken kullanılan menüye benzer, ancak veriler yerine sunucu belgesini işleyen Dosya ve Pencere gibi menü öğeleri olmamalıdır. Bu menü genellikle aşağıdakilerden oluşur:
Düzenle menüsü, dosyalar açıkken kullanılan menüyle aynıdır.
Ayırıcı.
Karalama örnek uygulamasındaki Kalem menüsü gibi nesne düzenleme menüleri.
Ayırıcı.
Yardım menüsü.
Örneğin, kapsayıcı ve sunucu için bazı örnek yerinde menülerin düzenine bakın. Örneği daha net hale getirmek için her menü öğesinin ayrıntıları kaldırıldı. Kapsayıcının yerinde menüsünde aşağıdaki girişler vardır:
IDR_CONTAINERTYPE_CNTR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File C1"
MENUITEM SEPARATOR
POPUP "&Zoom C2"
MENUITEM SEPARATOR
POPUP "&Options C3"
POPUP "&Window C3"
END
Ardışık ayırıcılar, sunucu menüsünün ilk bölümünün nereye gitmesi gerektiğini belirtir. Şimdi sunucunun yerinde menüsüne bakın:
IDR_SERVERTYPE_SRVR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Edit S1"
MENUITEM SEPARATOR
POPUP "&Format S2"
MENUITEM SEPARATOR
POPUP "&Help S3"
END
Buradaki ayırıcılar, ikinci kapsayıcı menüsü öğelerinin nereye gitmesi gerektiğini gösterir. Bu sunucudan bir nesne bu kapsayıcının içinde etkinleştirildiğinde elde edilen menü yapısı şöyle görünür:
BEGIN
POPUP "&File C1"
POPUP "&Edit S1"
POPUP "&Zoom C2"
POPUP "&Format S2"
POPUP "&Options C3
POPUP "&Window C3"
POPUP "&Help S3"
END
Gördüğünüz gibi, ayırıcılar her uygulamanın menüsünün farklı gruplarıyla değiştirilmiştir.
Yerinde menüyle ilişkili hızlandırıcı tabloları da sunucu uygulaması tarafından sağlanmalıdır. Kapsayıcı bunları kendi hızlandırıcı tablolarına ekler.
Eklenmiş bir öğe yerinde etkinleştirildiğinde, çerçeve yerinde menüyü yükler. Ardından sunucu uygulamasından yerinde etkinleştirme için menüsünü ister ve ayırıcıların bulunduğu yere ekler. Menüler bu şekilde birleştirilir. Dosya ve pencere yerleşimi üzerinde çalıştırmak için kapsayıcıdan menüler alırsınız ve öğe üzerinde çalıştırmak üzere sunucudan menüler alırsınız.
Araç Çubukları ve Durum Çubukları
Sunucu uygulamaları yeni bir araç çubuğu oluşturmalı ve bit eşlemini ayrı bir dosyada depolamalıdır. Uygulama sihirbazı tarafından oluşturulan uygulamalar bu bit eşlemi ITOOLBAR.BMP adlı bir dosyada depolar. Yeni araç çubuğu, sunucunuzun öğesi etkin olduğunda kapsayıcı uygulamasının araç çubuğunun yerini alır ve normal araç çubuğunuzla aynı öğeleri içermelidir, ancak Dosya ve Pencere menülerindeki öğeleri temsil eden simgeleri kaldırmalıdır.
Bu araç çubuğu, uygulama sihirbazı tarafından sizin için oluşturulan türetilmiş sınıfınıza COleIPFrameWnd
yüklenir. Durum çubuğu kapsayıcı uygulaması tarafından işlenir. Yerinde çerçeve pencerelerinin uygulanması hakkında daha fazla bilgi için bkz . Sunucular: Sunucu Uygulama.
Ayrıca bkz.
Menüler ve Kaynaklar (OLE)
Etkinleştirme
Sunucular
Konteynerler