Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как сделать выход из программы нажатием ALT-C


Автор: driver 27.3.2009, 23:41
Как в диалоговой програмке сделать выход из неё нажатием клавиш ALT+C? Тут вот я придумал для SHIFT+C:
    if(nChar==67&&::GetKeyState(VK_SHIFT)<0)
        OnOK();
Или для Ctrl'a:
    if(nChar==67&&::GetKeyState(VK_CONTROL)<0)
        OnOK();
Если поставить в GetKeyState() VK_MENU, то должно сработать для ALT'a. Но этого не происходит, потому как по нажатию клавиши ALT происходит вызов скрытого меню(в котором Закрыть, Переместить и About) Так что я не знаю, что делать. Помогите, пожалуйста

Автор: Albor 28.3.2009, 11:11
В ресурсы добавь Accelerator, сопоставь с командой сочетание кнопок. Перегрузи PreTranslateMessage и добавь туда код:
Код

if((pMsg->message >= WM_KEYFIRST) && (pMsg->message <= WM_KEYLAST))
    {
        return ::TranslateAccelerator(m_hWnd, h, pMsg);
    }

В OnInitDialog нужно загрузить таблицу акселераторов
Код

h=::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));

, где h - HACCEL h; объявлен как член класса диалога, IDR_ACCELERATOR1 - идентификатор таблицы акселераторов.
Успехов.

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