Aracılığıyla paylaş


Dil Çubuğu (Metin Hizmetleri)

Dil Çubuğu Nesnesini Uygulama

Dil çubuğuna öğe eklemeyi desteklemek için, metin hizmetinin ITfSource arabirimini ve ITfLangBarItem denetim öğelerinden birini destekleyen bir nesne uygulaması gerekir. Öğe yüklendiğinde, dil çubuğu öğenin ITfSource::AdviseSink IID_ITfLangBarItemSink ile çağırarak bir ITfLangBarItemSink havuzu yükler. Öğe ITfLangBarItemSink arabirimini kullanarak, örneğin öğenin gizlendiğinde, gösterildiğinde, etkinleştirildiğinde veya devre dışı bırakıldığında dil çubuğuna değişiklikleri bildirir.

Dört tür dil çubuğu öğesi yüklenebilir ve gerekli arabirimlerin her biri ITfLangBarItemoluşturulur. ITfLangBarItem denetim öğeleri aşağıdakiler mümkündür.

Öğe Açıklama
Düğme Dil çubuğu düğmesi, komut düğmesi, geçiş denetimi veya dil çubuğunda bir menü olarak çalışır. Nesnesi ITfLangBarItemButton arabirimini desteklemelidir.
Balon Dil çubuğu balonu, dil çubuğunda açılır bildirim olarak işlev görür. nesnesi ITfLangBarItemBalloon arabirimini desteklemelidir.
Bit eşlem Dil çubuğu bit eşlem, bit eşlem görüntüleyen dil çubuğunda statik bir öğe olarak çalışır. nesnesi ITfLangBarItemBitmap arabirimini desteklemelidir.
Bit Eşlem Düğmesi Dil çubuğu bit eşlem düğmesi, dil çubuğunda metin ve bit eşlem görüntüleyen bir düğme öğesi olarak çalışır. Nesnenin ITfLangBarItemBitmapButton arabirimini desteklemesi gerekir.

 

Düğme Stilleri

Düğme öğesi aşağıdakilerden herhangi biri gibi işlev görebilir. Düğme öğesinin işlevi, ITfLangBarItem::GetInfo yöntemindeki TF_LANGBARITEMINFO yapısının dwStyle üyesinde ayarlanan bayraklar tarafından belirlenir.

Öğe Açıklama
Düğme Düğme, standart bir komut düğmesi olarak çalışır. Bu düğme stili, TF_LBI_STYLE_BTN_BUTTON stiliyle tanımlanır. Öğe tıklatıldığında ITfLangBarItemButton::OnClick çağrılır. ITfLangBarItemButton::InitMenu ve ITfLangBarItemButton::OnMenuSelect kullanılmaz.
Düğmeyi Değiştir Düğme, onay kutusuna benzer şekilde tıklanan durumu koruyabilen bir geçiş denetimi işlevi görür. Bu düğme stili, TF_LBI_STYLE_BTN_TOGGLE stiliyle tanımlanır. Öğe tıklatıldığında ITfLangBarItemButton::OnClick çağrılır. ITfLangBarItemButton::InitMenu ve ITfLangBarItemButton::OnMenuSelect kullanılmaz.
Menü Düğme, açılan menü olarak çalışır. Bu düğme stili, TF_LBI_STYLE_BTN_MENU stiliyle tanımlanır. Düğmeye tıklandığında ITfLangBarItemButton::InitMenu çağrılır. Kullanıcı menüden bir öğe seçtiğinde, dil çubuğu seçili menü öğesinin tanımlayıcısıyla ITfLangBarItemButton::OnMenuSelect öğesini çağırır. ITfLangBarItemButton::OnClickis kullanılmaz.

 

Menü Düğmesi Uygulama

Kullanıcı bir menü düğmesine tıkladığında dil çubuğu ITfLangBarItemButton::InitMenu çağırır. Öğe, InitMenu'ya geçirilen ITfMenu arabirimini kullanarak menüye öğeler ekler.

Menüye bir alt menü eklemek için TF_LBMENUF_SUBMENU ile ITfMenu::AddMenuItem çağırın. Bu işlem tamamlandığında, addMenuItem öğesinin ppMenu parametresinde alt menüyü temsil eden yeni bir ITfMenu nesnesi döndürülür. Bu yeni menü nesnesi, alt menüye öğe eklemek için kullanılır.

Kullanıcı menüden bir öğe seçtiğinde, dil çubuğu ITfLangBarItemButton::OnMenuSelect öğesini seçili menü öğesinin tanımlayıcısıyla çağırır.

Dil Çubuğuna Öğe Ekleme

Metin hizmeti, ITfTextInputProcessor::Activate yöntemi çağrıldığında dil çubuğuna öğelerini eklemeli ve ITfTextInputProcessor::D eactivate çağrıldığında bunları kaldırmalıdır.

Dil çubuğuna öğe eklemek için, metin hizmeti IID_ITfLangBarItemMgr ile ITfThreadMgr::QueryInterface çağrısı yaparak bir ITfLangBarItemMgr arabirimi alır. Metin hizmeti daha sonra ITfLangBarItemMgr::AddItem dil çubuğu öğesi nesnesi işaretçisiyle çağırır.

Metin hizmetinin devre dışı bırakıldığında öğeyi kaldırması gerekir. Metin hizmeti, öğeleri eklemek için kullanılan ITfLangBarItemMgr arabirimini kullanır veya arabirimin başka bir örneğini alır. Daha sonra metin hizmeti, kaldırılacak öğenin arabirim işaretçisiyle ITfLangBarItemMgr::RemoveItem çağırır.

Sistem Dil Çubuğu Öğelerini Genişletme

TSF, mevcut dil çubuğu menülerine menü öğeleri ekleme olanağı sağlar. Bu, bir metin hizmetinin araç çubuğuna ayrı bir düğme eklemek zorunda kalmadan başka bir metin hizmetinin menüsüne öğe eklemesini sağlar. Bu, menü öğelerinin mantıksal gruplar halinde düzenlenmesini de sağlar. Örneğin, standart konuşma metin hizmetine ek özellikler sağlayan bir metin hizmeti, kendi üst düzey menü düğmesini eklemek yerine konuşma metin hizmeti menüsüne öğeler ekleyebilir.

Metin hizmeti, ITfSystemLangBarItemSink arabirimini destekleyen bir nesne uygulayarak bir dil çubuğu menü uzantısı sağlar. Bu arabirim, bir menü düğmesi için ITfLangBarItemButton arabirimi gibi çalışır. Menü görüntülendiğinde, genişletilmiş metin hizmeti ITfSystemLangBarItemSink::InitMenu çağırır. Uzantı, InitMenu'a geçirilen ITfMenu arabirimini kullanarak menüye öğeler ekler. Kullanıcı uzantı tarafından eklenen bir öğeyi seçtiğinde, genişletilmiş metin hizmeti ITfSystemLangBarItemSink::OnMenuSelect seçili menü öğesinin tanımlayıcısıyla çağırır.

Dil çubuğu menü uzantısını yüklemek için metin hizmeti aşağıdaki adımları tamamlar.

  1. Genişletilecek öğenin GUIDITfLangBarItemMgr::GetItem çağırarak öğenin genişletileceği ITfLangBarItem arabirimini alın.
  2. IID_ITfSource ile ITfLangBarItem::QueryInterface çağrısı yaparak öğenin genişletilme ITfSource arabirimini alın.
  3. ITfSource::AdviseSink IID_ITfSystemLangBarItemSink ve ITfSystemLangBarItemSink nesnesinin işaretçisini çağırın. ITfSource::AdviseSink başarısız olursa, metin hizmeti menü uzantılarını desteklemez.

ITfSource::UnadviseSinkITfSource::AdviseSink

Destekleyici Dil Çubuğu Menü Uzantıları

Metin hizmeti, diğer metin hizmetlerinin yukarıda gösterildiği gibi dil çubuğu menülerine öğe eklemesini sağlayabilir. Öğenin ITfLangBarItemMgr::GetItemçağrılarak alınabilmesi için GUID'sini yayımlaması gereken metin hizmeti.

Metin hizmetinin menü uzantılarını desteklemek için ITfSource arabirimini desteklemesi gerekir. Aşağıdaki adımlar bir veya daha fazla menü uzantısı için desteği etkinleştirir.

  1. IID_ITfSystemLangBarItemSink ITfSource::AdviseSink çağrıldığında, metin hizmetinin ITfSystemLangBarItemSink arabirimini depolaması ve uzantıyı tanımlayacak bir tanımlama bilgisi değeri döndürmesi gerekir.
  2. ITfLangBarItemButton::InitMenu çağrıldığında, metin hizmeti uzantının ITfSystemLangBarItemSink::InitMenu yöntemini çağırır. Metin hizmeti, metin hizmetinin kendisi tarafından eklenen öğelerden farklı olarak uzantı tarafından eklenen menü öğelerini tanımlamak için bir yol uygulamalıdır.
  3. ITfLangBarItemButton::OnMenuSelect bir uzantıya ait menü öğesi tanımlayıcısıyla çağrıldığında, metin hizmeti uzantıların ITfSystemLangBarItemSink::OnMenuSelect yöntemini çağırır.
  4. ITfSource::UnadviseSink uygun tanımlama bilgisi ile çağrıldığında, metin hizmeti menü uzantısını kaldırır.

Metin Hizmetleri Çerçevesi Ayarlama

Dil Çubuğu (Uygulamalar)