Aracılığıyla paylaş


İzlenecek yol: Araç Çubuklarına Denetimler Yerleştirme

Bu makalede, bir araç çubuğuna Windows denetimi içeren bir araç çubuğu düğmesinin nasıl ekleneceği açıklanmaktadır. MFC'de, araç çubuğu düğmesi CMFCToolBarButton Sınıfı türetilmiş bir sınıf olmalıdır; örneğin, CMFCToolBarComboBoxButton Sınıfı, CMFCToolBarEditBoxButton Sınıfı, CMFCDropDownToolbarButton Sınıfı veya CMFCToolBarMenuButton Sınıfı.

Araç Çubuklarına Denetim Ekleme

Araç çubuğuna denetim eklemek için şu adımları izleyin:

  1. Üst araç çubuğu kaynağındaki düğme için sahte bir kaynak kimliği ayırın. Visual Studio'da Araç Çubuğu Düzenleyicisi'ni kullanarak düğme oluşturma hakkında daha fazla bilgi için Araç Çubuğu Düzenleyicisi makalesine bakın.

  2. Üst araç çubuğunun tüm bit eşlemlerindeki düğme için bir araç çubuğu görüntüsü (düğme simgesi) ayırın.

  3. İletiyi işleyen ileti işleyicisinde AFX_WM_RESETTOOLBAR aşağıdaki adımları uygulayın:

    1. -derived sınıfını kullanarak CMFCToolbarButtondüğme denetimini oluşturma.

    2. CMFCToolBar::ReplaceButton komutunu kullanarak sahte düğmeyi yeni denetimle değiştirin. Düğme nesnesini kopyalayıp kopyayı koruduğundan, ReplaceButton yığında düğme nesnesini oluşturabilirsiniz.

Dekont

Uygulamanızda özelleştirmeyi etkinleştirdiyseniz, yeniden derlemeden sonra uygulamanızda güncelleştirilmiş denetimi görmek için Özelleştir iletişim kutusunun Araç Çubukları sekmesindeki Sıfırla düğmesini kullanarak araç çubuğunu sıfırlamanız gerekebilir. Araç çubuğu durumu Windows kayıt defterine kaydedilir ve uygulama başlatma sırasında yöntem yürütüldükten sonra ReplaceButton kayıt defteri bilgileri yüklenir ve uygulanır.

Araç Çubuğu Denetimleri ve Özelleştirme

Özelleştir iletişim kutusunun Komutlar sekmesi, uygulamada kullanılabilen komutların listesini içerir. Varsayılan olarak, Özelleştir iletişim kutusu uygulama menülerini işler ve her menü kategorisinde standart araç çubuğu düğmelerinin listesini oluşturur. Araç çubuğu denetimlerinin sağladığı genişletilmiş işlevselliği korumak için, standart araç çubuğu düğmesini Özelleştir iletişim kutusundaki özel denetimle değiştirmeniz gerekir.

Özelleştirmeyi etkinleştirdiğinizde, CMFCToolBarsCustomizeDialog Sınıfı sınıfını kullanarak özelleştirme işleyicisinde OnViewCustomize Özelleştir iletişim kutusunu oluşturursunuz. CMFCToolBarsCustomizeDialog::Create çağrısı yaparak Özelleştir iletişim kutusunu görüntülemeden önce, standart düğmeyi yeni denetimle değiştirmek için CMFCToolBarsCustomizeDialog::ReplaceButton öğesini çağırın.

Örnek: Bul Birleşik Giriş Kutusu Oluşturma

Bu bölümde, araç çubuğunda görünen ve son kullanılan arama dizelerini içeren Bir Bul birleşik giriş kutusu denetiminin nasıl oluşturulacağı açıklanmaktadır. Kullanıcı denetime bir dize yazabilir ve sonra enter tuşuna basarak belgeyi arayabilir veya çıkış tuşuna basarak odağı ana çerçeveye döndürebilir. Bu örnekte, belgenin CEditView Sınıfı türetilmiş bir görünümde görüntülendiği varsayılır.

Bulma Denetimi Oluşturma

İlk olarak, Bul birleşik giriş kutusu denetimini oluşturun:

  1. Düğmeyi ve komutlarını uygulama kaynaklarına ekleyin:

    1. Uygulama kaynaklarında, uygulamanızdaki bir araç çubuğuna ve araç çubuğuyla ilişkilendirilmiş bit eşlemlere komut kimliğine sahip ID_EDIT_FIND yeni bir düğme ekleyin.

    2. Komut kimliğiyle ID_EDIT_FIND yeni bir menü öğesi oluşturun.

    3. Dize tablosuna yeni bir "Find the text\nFind" dizesi ekleyin ve bu dizeye bir ID_EDIT_FIND_COMBO komut kimliği atayın. Bu kimlik, Bul birleşik giriş kutusu düğmesinin komut kimliği olarak kullanılır.

      Dekont

      ID_EDIT_FIND tarafından CEditViewişlenen standart bir komut olduğundan, bu komut için özel bir işleyici uygulamanız gerekmez. Ancak, yeni komutu ID_EDIT_FIND_COMBOiçin bir işleyici uygulamanız gerekir.

  2. CComboBox Sınıfından türetilen yeni bir sınıf CFindComboBoxoluşturun.

  3. CFindComboBox sınıfında sanal yöntemini geçersiz kılınPreTranslateMessage. Bu yöntem, birleşik giriş kutusunun WM_KEYDOWN iletisini işlemesini sağlar. Kullanıcı kaçış tuşuna ()VK_ESCAPE isabet ederse, odağı ana çerçeve penceresine döndürebilirsiniz. Kullanıcı Enter tuşuna ()VK_ENTER isabet ederse, ana çerçeve penceresine komut kimliğini içeren ID_EDIT_FIND_COMBO bir WM_COMMAND ileti gönderin.

  4. BUL birleşik giriş kutusu düğmesi için CMFCToolBarComboBoxButton Sınıfından türetilen bir sınıf oluşturun. Bu örnekte adı CFindComboButtonverilmiştir.

  5. oluşturucusu CMFCToolbarComboBoxButton üç parametre alır: düğmenin komut kimliği, düğme görüntüsü dizini ve birleşik giriş kutusunun stili. Bu parametreleri aşağıdaki gibi ayarlayın:

    1. ID_EDIT_FIND_COMBO komutunu komut kimliği olarak geçirin.

    2. Görüntü dizinini almak için CCommandManager::GetCmdImage ile kullanın.ID_EDIT_FIND

    3. Kullanılabilir birleşik giriş kutusu stillerinin listesi için bkz . Birleşik Giriş Kutusu Stilleri.

  6. CFindComboButton sınıfında yöntemini geçersiz kılınCMFCToolbarComboBoxButton::CreateCombo. Burada nesneyi oluşturup CFindComboButton buna bir işaretçi döndürmeniz gerekir.

  7. Birleşik giriş düğmesini kalıcı hale getirmek için IMPLEMENT_SERIAL makroyu kullanın. Çalışma alanı yöneticisi otomatik olarak yüklenir ve düğmenin durumunu Windows kayıt defterine kaydeder.

  8. İşleyiciyi ID_EDIT_FIND_COMBO belge görünümünüzde uygulayın. Tüm Bul birleşik giriş kutusu düğmelerini almak için CMFCToolBar::GetCommandButtons komutunu ile ID_EDIT_FIND_COMBO kullanın. Özelleştirme nedeniyle aynı komut kimliğine sahip bir düğmenin birkaç kopyası olabilir.

  9. İleti işleyicisinde, bul komutunun ID_EDIT_FIND Bul birleşik giriş kutusu düğmesinden gönderilip gönderilmediğini belirlemek için CMFCToolBar::IsLastCommandFromButton kullanın.OnFind Bu durumda, metni bulun ve arama dizesini birleşik giriş kutusuna ekleyin.

Bul Denetimini Ana Araç Çubuğuna Ekleme

Araç çubuğuna birleşik giriş kutusu düğmesini eklemek için şu adımları izleyin:

  1. AFX_WM_RESETTOOLBAR ana çerçeve penceresinde ileti işleyicisini OnToolbarReset uygulayın.

    Dekont

    Uygulama başlatma sırasında bir araç çubuğu başlatıldığında veya özelleştirme sırasında bir araç çubuğu sıfırlandığında çerçeve bu iletiyi ana çerçeve penceresine gönderir. Her iki durumda da standart araç çubuğu düğmesini özel Bul birleşik giriş kutusu düğmesiyle değiştirmeniz gerekir.

  2. İşleyicide AFX_WM_RESETTOOLBAR araç çubuğu kimliğini, yani AFX_WM_RESETTOOLBAR iletisinin WPARAM'sini inceleyin. Araç çubuğu kimliği, Bul birleşik giriş kutusu düğmesini içeren araç çubuğunun kimliğine eşitse, Bul düğmesini (yani düğmeyi komut kimliğiyle ID_EDIT_FIND) bir CFindComboButton nesneyle) değiştirmek için CMFCToolBar::ReplaceButton öğesini çağırın.

    Dekont

    Düğme nesnesini kopyalayıp kopyayı koruduğundan ReplaceButton yığında bir CFindComboBox nesne oluşturabilirsiniz.

Özelleştir İletişim Kutusuna Bul Denetimi Ekleme

Özelleştirme işleyicisindeOnViewCustomize, Bul düğmesini (yani, komut kimliğiyle ID_EDIT_FINDdüğmeyi) bir CFindComboButton nesneyle değiştirmek için CMFCToolBarsCustomizeDialog::ReplaceButton çağrısı yapın.

Ayrıca bkz.

Hiyerarşi Grafiği
Sınıflar
CMFCToolBar Sınıfı
CMFCToolBarButton Sınıfı
CMFCToolBarComboBoxButton Sınıfı
CMFCToolBarsCustomizeDialog Sınıfı