• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

MFC: Dialog based

  • Автор темы Автор темы solova
  • Дата начала Дата начала
S

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, и я решил что значит где-то код для них есть.
 
Вот код, работает, на 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);
}
 
Break-и не нужны, return-ы их заменяют.

Добавлено: Думаю так будет правильнее:
C++:
		switch ( pMsg->wParam ) {
case VK_RETURN: return true;
case VK_ESCAPE: return true;
}
break;
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab