Кнопка закрытия в строке заголовка в MFC - PullRequest
2 голосов
/ 22 июля 2009

В VFC ++ 6.0 Dialog Based MFC приложении: Я не хочу, чтобы мой пользователь закрывал окно, нажав кнопку [X] в правой верхней части самого окна, а также (Alt + F4). Я хочу отобразить окно сообщения («Вы действительно хотите закрыть приложение»); если пользователь нажимает кнопку ОК, то приложение должно закрываться, в противном случае, если пользователь нажимает кнопку ОТМЕНА, приложение не должно закрываться.

Ответы [ 2 ]

3 голосов
/ 22 июля 2009

Обработайте сообщение WM_SYSCOMMAND и сделайте в нем что-то подобное.

void CMyApp::OnSysCommand(UINT nID, LPARAM lParam)
{
    if(nID == SC_CLOSE)
    {
        if(MessageBox(_T("Really"), _T("What"), MB_YESNO) == IDYES);
            //Do What you want here.
        else
            //Do something else
    }
    else
    {
        CDialog::OnSysCommand(nID, lParam);
    }
}

Вот как добавить обработчик WM_SYSCOMMAND в ваш код:

Перейти к ClassView. Щелкните правой кнопкой мыши свой класс диалога, если это приложение на основе диалога ИЛИ класс мэйнфрейма, если это приложение SDI / MDI. Нажмите Свойства.

В окне свойств нажмите кнопку «Сообщения». Прокрутите вниз до WM_SYSCOMMAND и дважды щелкните раскрывающийся список, чтобы добавить обработчик.

ИЛИ

Вы также можете сделать это вручную, добавив запись в карту сообщений. И добавление объявления / определения в .h / .cpp соответственно.

3 голосов
/ 22 июля 2009

Вам необходимо реализовать OnClose() и вызывать базовый класс OnClose() только если вы хотите выйти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...