Элемент управления WinHotkeyCtrl
От: Александр Авдонин Россия www.ntwind.com
Дата: 05.08.04 02:43
Оценка: 155 (5)
Статья:
Элемент управления WinHotkeyCtrl
Автор(ы): Александр Авдонин
Дата: 05.08.2004
WinHotkeyCtrl – элемент управления, предназначенный для задания и управления «горячими клавишами» (hotkey`s). В отличие от стандартного элемента управления Windows (HotKeyCtrl), WinHotkeyCtrl обладает рядом преимуществ:

[+] разрешены комбинации с клавишей-модификатором Win;
[+] поддержка мултимедийных клавиш (Microsoft-совместимых);
[+] перегрузка практически любой системной комбинации клавиш, кроме Ctrl+Alt+Del;
[+] расширенное контекстное меню.

WinHotkeyCtrl строится на базе стандартного элемента управления EditCtrl методом сабклассирования (subclassing), что обеспечивает удобство и легкость его использования с шаблонами окон диалогов.
С помощью директив препроцессора в одном исходном файле реализованы 2 версии WinHotkeyCtrl: для Windows 98/NT и для Windows 2000 (и выше).


Авторы:
Александр Авдонин

Аннотация:
WinHotkeyCtrl – элемент управления, предназначенный для задания «горячих клавиш». В отличие от стандартного элемента управления Windows (HotKeyCtrl), WinHotkeyCtrl обладает рядом преимуществ:
— разрешены комбинации с клавишей-модификатором Win;
— поддержка мултимедийных клавиш (Microsoft-совместимых);
— перегрузка практически любой системной комбинации клавиш (Alt+Tab, Ctrl+Shift+Esc и т. д.), кроме комбинации SAS в NT (Secure Attention Sequence – по умолчанию Ctrl+Alt+Del);
— расширенное контекстное меню;
WinHotkeyCtrl строится на базе стандартного элемента управления EditCtrl методом сабклассирования (subclassing), что обеспечивает удобство и легкость его использования с шаблонами окон диалогов.
Re: Элемент управления WinHotkeyCtrl
От: _nn_  
Дата: 05.08.04 06:59
Оценка:
Есть небольшая но немного раздражительная проблема.
Дело в том что нет возможности удалить горяую клавишу, т.е. когда в обычном элементе управления есть "None".
У вас "None" установлен в самом начале, но если нажать какую-либо клавишу то нет возможности удалить ее.

А так супер !
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Элемент управления WinHotkeyCtrl
От: paul_shmakov Россия  
Дата: 05.08.04 10:03
Оценка:
Здравствуйте, Александр Авдонин, Вы писали:

... С помощью директив препроцессора в одном исходном файле реализованы 2 версии WinHotkeyCtrl: для Windows 98/NT и для Windows 2000 (и выше).


А почему с помощью директив препроцессора? Лучше бы это делать динамически, чтобы без перекомпиляции элемент управления работал везде.
Paul Shmakov
Re: Элемент управления WinHotkeyCtrl
От: adontz Грузия http://adontz.wordpress.com/
Дата: 05.08.04 12:10
Оценка: +1
Здравствуйте, Александр Авдонин, Вы писали:

  • Зачем выводить 16ричный код клавиши? Пользователя это может запутать.
  • Клавиши My Computer и Calculator распознаются как StartApp1 и StartApp2. Клавиша контекстного меню распознаётся как App. Названия не удобны.
  • Клавиши Power, Sleep, WakeUp вообще не распознаются (Unknown). и не глотаются.
  • Tab и Shift+Tab вводятся и глотаются. Это не удобно.
  • Многие названия клавиш национальные, хорошобы предусмотреть локализацию (Down Arrow == Стрелка Вниз)
  • Ins и Del лучше заменить на Insert и Delete
  • Для клавиш -=\/,. выводится по два символа. Странно.
  • Для клавиши , (0xBC) кроме того выводится закрывающая скобка
  • Цифры слева и справа различаются, а клавиши Enter нет.
  • Определение #define WM_KEY (WM_USER + 444) вообще говоря не вполне корректно. Лучше использовать RegisterWindowMessage
  • Стандартные сообщение HotKey Control (HKM_GETHOTKEY, HKM_SETHOTKEY, HKM_SETRULES) я не нашёл.
  • Вообще никакого способа самому программно установить комбинацию клавиш (аналог HKM_SETHOTKEY) или фильтр (аналог HKM_SETRULES) я не нашёл.

    А так наверное не плохо
  • A journey of a thousand miles must begin with a single step © Lau Tsu
    Re: Элемент управления WinHotkeyCtrl
    От: djyuran  
    Дата: 11.03.05 06:36
    Оценка:
    АА>WinHotkeyCtrl строится на базе стандартного элемента управления EditCtrl методом сабклассирования (subclassing), что обеспечивает удобство и легкость его использования с шаблонами окон диалогов.
    Всё конечно хорошо, только в 98 эта вещь торжественно падает...
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.