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

Ваш аккаунт

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

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

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

Активация системного меню (минимизация, максимизация, закрытие)

8.6K
23 августа 2006 года
Xavier
69 / / 23.08.2006
Подскажите пожалуйста, как заставить работать системное меню? Куда вставить обработчик сообщений для закрытия приложения "крестиком" или минимизации/максимизации?
8.6K
24 августа 2006 года
Xavier
69 / / 23.08.2006
Если быть точнее, то у меня приложение закрывается только по нажатию <Enter> или <Escape>!!! Даже <Alt>+F4 не работает!!! Кто-нибудь объяснит почему?
354
24 августа 2006 года
ШпиЁн
468 / / 19.02.2006
MFC? на форуме недавно была похожая тема и объяснение этого явления(о enter & escape)
8.6K
24 августа 2006 года
Xavier
69 / / 23.08.2006
Цитата:
объяснение этого явления(о enter & escape)


Не, ну <Enter> и <Escape> - в принципе понятно, почему так работают - пережитки IDOK и IDCANCEL. Но почему не возникают события, вызываемые нажатием <min>, <max>, <close>???

354
24 августа 2006 года
ШпиЁн
468 / / 19.02.2006
да чтож за проблема такая специфичная-то?
Я создал обычный проект MFC, автоматически все сгенерировалось, всё работает!
8.6K
24 августа 2006 года
Xavier
69 / / 23.08.2006
Всё работает! Я просто случайно по видимому вызвал переопределение системных событий через WM_SYSCOMMAND. Теперь всё в норме. Единственное, теперь мучает вопрос, как запретить проге завершаться по <Enter> и <Escape>? :(
534
24 августа 2006 года
HarryAxe
448 / / 19.01.2006
[QUOTE=Xavier]Всё работает! Я просто случайно по видимому вызвал переопределение системных событий через WM_SYSCOMMAND. Теперь всё в норме. Единственное, теперь мучает вопрос, как запретить проге завершаться по <Enter> и <Escape>? :([/QUOTE]
Почему бы не переопределить OnOK() и OnCancel() и не запретить вызов соответствующих функций базового класса?
 
Код:
void CMyDlg::OnOK()
{
    // CDialog::OnOK() - эту строчку убираем
}

Правда, в таком случае придётся доопределить код для WM_CLOSE, благо это совсем не сложно.
8.6K
24 августа 2006 года
Xavier
69 / / 23.08.2006
[QUOTE=HarryAxe]Почему бы не переопределить OnOK() и OnCancel() и не запретить вызов соответствующих функций базового класса?[/QUOTE]
Так дело в том, что я уже весь проект почистил от возможности наступления событий OnOK и OnCancel... Что ж мне теперь по-новой создавать их? И зачем они мне? :(
354
24 августа 2006 года
ШпиЁн
468 / / 19.02.2006
надо было по форуму поискать, там же было решение!
переопределить можно вот как:
Код:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
    switch ( pMsg->message)
    {
    case WM_KEYDOWN:
        switch( pMsg->wParam)
        {
            case VK_RETURN:
            {
                return true;
            }
            case VK_ESCAPE:
            {
                return true;
            }
        }
    }
    return CDialog::PreTranslateMessage(pMsg);
}

в этом случае enter escape вообще не доходят :-)))OnCancel() в этом случае можно оставить в покое чтобы форма нормально закрывалась...
8.6K
25 августа 2006 года
Xavier
69 / / 23.08.2006
ок, спасибо за совет. помогло!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог