Visual C++, kalıcı bir iletişim kutusu içinde kısayol tuşlarını kullanma

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:222829
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Not Microsoft Visual C++ .NET (2002), Microsoft .NET Framework tarafından sağlanan bir yönetilen kod model hem de yerel Microsoft Windows kod modeli yönetilmeyen destekler. Bu makaledeki bilgiler yalnızca yönetilmeyen Visual C++ kod uygulanır.
Özet
Kısayol tuşları, bir ortak kullanıcı arabirimi Windows uygulamaları özelliğidir; bu nedenle, neden bunları hemen uygulamaya sınırlamak? Bu makalede, herhangi bir kalıcı iletişim kutusunu Hızlandırıcı tuş işlevselliği eklemek gösterilmiştir.
Daha fazla bilgi
Klavye hızlandırıcıları, uygulamanın ana ileti döngüsünü TranslateAccelerator() işlevini çağırarak işlenir. Ancak, kalıcı bir iletişim kutusu için (Windows'da yerleşik) iletişim kutusu yöneticisini ileti döngüsü çevirir ve iletileri göndermek için kullanılır. Tabii ki bu ileti döngüsü hızlandırıcıları işlemek için tasarlanmış nedeniyle TranslateAccelerator() işlevini çağırmaz.

Kısayol tuşlarını kalıcı bir iletişim kutusu işlemek için <a0></a0>, iletişim kutusunun PreTranslateMessage() geçersiz işlev ve çağırarak, iletinin bir kısayol tuşu olarak atamak işlemek için:: TranslateAccelerator(). Bu yöntem başarısız olursa, taban sınıfı PreTranslateMessage() çaðýrarak sonra işlem devam eder.

Bu makalede amacıyla Hızlandırıcı tuş işlevselliği MFC MDI uygulama AboutBox iletişim kutusuna ekledik:
  1. Test adlı yeni bir MFC MDI uygulaması oluşturun.
  2. Kaynak Kimliği "IDC_BUTTON1" AboutBox iletişim kutusu kaynak için bir düğme ekleyin.
  3. Bu düğme için bir işleyici ekleyin ve Hızlandırıcı tuş olarak çalışan bir göstergesi olarak aşağıdaki kodu ekleyin düğmeyi çift tıklatın:
    AfxMessageBox("Hello");
  4. Kaynak için yeni bir Hızlandırıcı tablo ekleyin.
  5. F5 ilişkilendirerek, tabloya bir Hızlandırıcı anahtarı eklemek için kaynak KIMLIĞI "IDC_BUTTON1" anahtar.
  6. Üye değişken, m_hAccelTable sınıfa eklemek CAboutBox:
    HACCEL  m_hAccelTable;
  7. Içinde CAboutBox::CAboutBox m_hAccelTable başlatılamıyor:
    m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
  8. Geçersiz kılma, PreTranslateMessage için CAboutDlg eklemek için (sınıf Sihirbazı Visual C++ 6.0 ve önceki sürümlerinde) kodu Sihirbazı'nı kullanın.
  9. Aşağıdaki kod satırlarını CAboutBox::PreTranslateMessage() yöntemini ekleyin:
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {   if (m_hAccelTable) {      if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {         return(TRUE);      }   }   return CDialog::PreTranslateMessage(pMsg);}
  10. Derleyip CTestApp çalıştırın.

Sonuçları CAboutBox etkin olduğunda, kısayol tuşu F5 şimdi button1 işleyicisi tetikler.
Referanslar
Kısayol tuşu, kalıcı iletişim kutuları içinde işleme hakkında ek bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
100770 BILGI: Hızlandırıcı tuş modal iletişim kutusu ana pencere ile kullanma
Hızlandırıcı kalıcı iletişim kutusu

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 222829 - Son İnceleme: 12/05/2015 13:27:31 - Düzeltme: 4.1

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbacceleratorkey kbhowto kbkeyaccel kbuidesign KB222829 KbMttr
Geri bildirim