Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Акселераторы без ресурсов

243
15 июля 2005 года
pacific_7
1.9K / / 06.09.2004
Не получается сделать акселераторы без использования ресурсов:
Код:
ACCEL accel;
    accel.cmd=ID_EXIT;
    accel.fVirt=FCONTROL|FVIRTKEY;
    accel.key='q';
       h_accels=CreateAcceleratorTable(&accel,1);
    ShowWindow(win,nCmdShow);
    UpdateWindow(win);

    //НАЧАЛО ЦИКЛА ПРИЕМА СООБЩЕНИЙ
    while(GetMessage(&messg, NULL,0,0))
    {
        if(!TranslateAccelerator(win,h_accels,&messg))
        {
            TranslateMessage(&messg);
            DispatchMessage(&messg);
        }
    }

win - понятно хэндл главного окна.
Пункт меню посылающий то же сообщение (ID_EXIT) работает нормально. Функция CreateAcceleratorTable возвращает ненулевое значение.
Мне кажется, что я что-то недопонимаю с элементом key. Вот только что?
243
15 июля 2005 года
pacific_7
1.9K / / 06.09.2004
Позволю себе снять вопрос - разобрался:
 
Код:
case WM_COMMAND:
    switch(LOWORD(wparam))//у меня не было LOWORD, обрабатывался просто wparam
    {
    case ID_EXIT:
    SendMessage(win,WM_DESTROY,NULL,NULL);
        return 0;
    }

Может кому инетерсно: HIWORD(wparam) равен 0 при получении сообщения от меню и 1 при получении сообщения от акселератора. Поэтому сообщение меню обрабатывалось нормально, а сообщение акселератора естественно нет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог