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. Вот только что?
Код:
case WM_COMMAND:
switch(LOWORD(wparam))//у меня не было LOWORD, обрабатывался просто wparam
{
case ID_EXIT:
SendMessage(win,WM_DESTROY,NULL,NULL);
return 0;
}
switch(LOWORD(wparam))//у меня не было LOWORD, обрабатывался просто wparam
{
case ID_EXIT:
SendMessage(win,WM_DESTROY,NULL,NULL);
return 0;
}
Может кому инетерсно: HIWORD(wparam) равен 0 при получении сообщения от меню и 1 при получении сообщения от акселератора. Поэтому сообщение меню обрабатывалось нормально, а сообщение акселератора естественно нет.