MFC: Dialog based

Тема в разделе "MS Visual C++", создана пользователем solova, 6 апр 2011.

  1. solova

    solova Гость

    создаю проект MFC:
    Application Type :Dialog based
    \Finish
    и по дэфу создаётся окно с двумя кнопками OK и Cancel
    при дебаге открывается окно и при нажатии на эти кнопки или (Esc) приложение закрывается
    в файлах приложения обработку нажатия этих кнопок я не нашёл
    только в MyDialog.cpp (не MyDialogDlg.cpp) мне предлагают написать обработку для них<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    CMyDialogDlg dlg;
    m_pMainWnd = &dlg;
    INT_PTR nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
    // TODO: Place code here to handle when the dialog is
    // dismissed with OK
    }
    else if (nResponse == IDCANCEL)
    {
    // TODO: Place code here to handle when the dialog is
    // dismissed with Cancel
    }
    но обработки пустые и никаких PostQuitMessage() нету
    так как же нажатие на эти кнопки обрабатывается, то есть где
    Как избавиться от этих кнопок(просто удалить?) так чтоб ни одной строчки кода от них не осталось(я про тот код который закрывает приложение)
    И кстати как избавится от закрывания после нажатия на Esc, хук что ли ставить на клаву?
    PS:я ставил ещё одну кнопку и менял ИД на IDOK, а на кнопке ОК , IDYES, так вот на нажатие на свою кнопку(IDОК) приложение закрывалось , а на кнопку ОК(IDYES) нет. Так как эти ID задефендены в winuser.h, я решил что происходит дефалтная обработка кнопок с этими ИД . Но нет программа реагирует только на IDOK и IDCANCEL, и я решил что значит где-то код для них есть.
     
  2. solova

    solova Гость

    Вот код, работает, на esc и enter не реагирует (что и надо), но правильно ли там всё например break-и нужны или так нормально будет(чтоб в дальнейшем ошибки при работе проги не выскакивали)
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    //CMyDlg.cpp
    BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
    {
    switch ( pMsg->message)
    {
    case WM_KEYDOWN:
    switch( pMsg->wParam)
    {
    case VK_RETURN: return true;
    case VK_ESCAPE: return true;
    default:        return false;
    }
    default: return false;
    }
    return CMyDlg::PreTranslateMessage(pMsg);
    }
     
  3. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Break-и не нужны, return-ы их заменяют.

    Добавлено: Думаю так будет правильнее:
    Код (C++):
            switch ( pMsg->wParam ) {
    case VK_RETURN: return true;
    case VK_ESCAPE: return true;
    }
    break;
     
Загрузка...
Похожие Темы - MFC Dialog based
  1. PetrovVA
    Ответов:
    3
    Просмотров:
    1.727
  2. harimambura
    Ответов:
    0
    Просмотров:
    1.303
  3. Antonim
    Ответов:
    1
    Просмотров:
    1.238
  4. Antonim
    Ответов:
    4
    Просмотров:
    1.816
  5. ezus
    Ответов:
    4
    Просмотров:
    4.693

Поделиться этой страницей