Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > VK_ESCAPE


Автор: Kostik88 7.7.2008, 22:10
Здравствуйте!

Ктонибудь может ответить на мой вопрос.

У меня есть диалоговое окно, я хочю сделать так чтобы оно закрывалось при нажатии клавиши Esc, как это можно сделать?

Я в ф-ции диалога написал обработку сообщения:

......................................
case WM_KEYUP:
        
    switch(wParam)
    {
    case VK_ESCAPE:
     EndDialog(hDlg,0);
    break;
     
     }
         break;

Но она не работает, может я чтонибудь не так делаю. 0о

Заранее благодарен.

Автор: 586 7.7.2008, 22:36
При нажатии клавиши Escape в диалоговом окне ему придёт сообщение WM_COMMAND IDCANCEL. На Enter - IDOK.
Код
case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case IDCANCEL:
        EndDialog(hWnd, 0);
        break;
    }
    break;

Автор: Kostik88 7.7.2008, 22:38
Честно говоря у меня такая конструкция написанна, но она не реагирует на клавишу Esc. 0o

Автор: Kostik88 7.7.2008, 23:50
Может быть это из-за того что у меня немодальный диалог....?
Тогда вопрос, как это сделать в немодальном диалоге?

Автор: Kostik88 8.7.2008, 00:33
Всё разобрался) Я немного неправильно в WinMain писал обращение к диалогу

вот как надо было:

while(GetMessage(&msg,NULL,0,0)){

          if(!TranslateAccelerator(HWnd,hAccel,&msg)){
               if(!IsDialogMessage(hDialog,&msg)){
                    TranslateMessage(&msg);
                    DispatchMessage(&msg);}
          }
     }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)