Использование сочетаний клавиш в модального диалогового окна в Visual C++

Переводы статьи Переводы статьи
Код статьи: 222829 - Vizualiza?i produsele pentru care se aplic? acest articol.
Примечание Microsoft Visual C++.NET (2002) поддерживает управляемый код модель, предоставляемых платформой Microsoft.NET Framework и неуправляемый машинный код Модель кода Microsoft Windows. В данной статье применима только к неуправляемый код Visual C++.
Развернуть все | Свернуть все

Аннотация

Сочетания клавиш являются общий компонент пользовательского интерфейса Приложения Windows; Таким образом, Зачем ограничивать их непосредственно в приложение? Это в статье показано, как для добавления ключевых функций сочетаний клавиш для любой модального диалогового окна.

Дополнительная информация

Сочетания клавиш обрабатываются путем вызова метода Функция TranslateAccelerator() в приложении основной цикл обработки сообщений. Однако для модального диалогового окна, диспетчер поле диалогового окна сообщения цикла (построение в Windows) используется для преобразования и передачи сообщений. Само собой поскольку Этот цикл обработки сообщений не предназначена для обработки клавиши быстрого доступа, не вызывает Функция TranslateAccelerator().

Чтобы процесс сочетания клавиш в модальное диалоговое окно, необходимо переопределить PreTranslateMessage() из диалогового окна функции и попытаться обработать сообщение как ускоритель путем вызова метода :: TranslateAccelerator(). Если этот метод не выполняется, то обработка продолжает вызов базового класса PreTranslateMessage().

В целях в этой статье мы добавления ускоритель ключевых функций в диалоговом окне AboutBox приложения MFC с интерфейсом MDI.
  1. Создайте новое приложение MFC с интерфейсом MDI с именем Test.
  2. Чтобы добавить кнопку, с Идентификатором ресурса «idc_button1» Ресурс AboutBox диалогового окна.
  3. Дважды щелкните кнопку, чтобы добавить обработчик для кнопки и как индикатор, сочетание клавиш работает, вставьте следующий код:
    AfxMessageBox("Hello");
  4. Вставка новой таблицы сочетаний клавиш для ресурса.
  5. Добавьте в таблицу сочетаний клавиш, связав F5 ключ для Идентификатора ресурса «idc_button1».
  6. Добавьте в класс m_hAccelTable переменной, члена, CAboutBox:
    HACCEL  m_hAccelTable;
  7. Инициализация m_hAccelTable в CAboutBox::CAboutBox:
    m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
  8. С помощью мастера кода (мастер классов в Visual C++ 6.0 и более ранние) для добавления переопределение метода PreTranslateMessage для CAboutDlg.
  9. Добавьте в метод CAboutBox::PreTranslateMessage() следующие строки кода:
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {
       if (m_hAccelTable) {
          if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {
             return(TRUE);
          }
       }
       return CDialog::PreTranslateMessage(pMsg);
    
    }
  10. Скомпилируйте и запустите CTestApp.

Результаты Сочетание клавиш F5 теперь запускает обработчик button1 при CAboutBox является активным.

Ссылки

Для получения дополнительных сведений об обработке ключа сочетаний клавиш в рамках модальные диалоговые окна обратитесь к следующей статье Microsoft База знаний:
100770 ИНФОРМАЦИЯ: С помощью сочетаний клавиш с помощью модального диалогового главного окна

Свойства

Код статьи: 222829 - Последний отзыв: 4 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Foundation Class Library 4.2 на следующих платформах
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ .NET 2002 Standard Edition
    • Microsoft Visual C++ .NET 2003 Standard Edition
Ключевые слова: 
kbacceleratorkey kbhowto kbkeyaccel kbuidesign kbmt KB222829 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:222829

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com