Обработка нажатия клавиш в диалоговом окне [winAPI]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Gar|k, 28 Sep 2010.

  1. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    В общем есть у меня не модальное диалоговое окно, которое создается из ресурсов путем вызова функции DialogBox и в нем есть ListBox. Я хочу сделать так что бы при нажатии клавиш backspace и delete удалялся выделенный item.

    Посмотрев через Spy++ я выяснил что сообщение WM_KEYDOWN посылается непосредственно listbox-у

    Вопрос: как его обработать?

    Я попытался сделать через сабклассинг листбокса при инициализации диалога SetWindowLong GWL_WNDPROC, но программа почему-то зацикливается на назначенной процедуре... :confused:
     
    _________________________
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Оказывается в listbox есть спецовый флаг стиля LBS_WANTKEYBOARDINPUT
    Остается только в процедуре диалога обработать
    Code:
    case WM_VKEYTOITEM:
    if(LOWORD(wParam)==VK_BACK) {
    ...
    
    Тему можно закрыть или удалить вдруг кому полезно будет
     
    _________________________
    1 person likes this.
Loading...