Control-C Exception, брошенная программой, составленной без времени выполнения C ++ [Duplicate]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Control-C Exception, брошенная программой, составленной без времени выполнения C ++ [Duplicate]

Сообщение Anonymous »

В настоящее время я пишу программу без CRT в Visual Studio 2022, установив необходимые параметры, такие как /nodefaultlib, пользовательская точка входа и т. Д. < /p>
Моя программа выделяет или прикрепляется к консоли. Однако, когда я нажимаю CTRL+C, исключение CONTROL-C бросается в ctrlroutine () в kernelbase.dll

Код: Выделить всё

#include
void __cdecl MyEntryPoint()
{
if (!AttachConsole(ATTACH_PARENT_PROCESS)) {
// If attaching fails, create a new console
AllocConsole();
}
Sleep(3000);
MessageBoxA(NULL, "Hello", "World", MB_OK);
}
I tried writing a custom handler by SetConsoleCtrlHandler handling CTRL_C_EVENT, etc. But this did not worked (Looks like CTRL_C_EVENT is not dispatched because branch does not execute)
Edit: The handler routine

Код: Выделить всё

BOOL WINAPI ConsoleHandler(DWORD dwCtrlType) {
switch (dwCtrlType) {
case CTRL_C_EVENT:
case CTRL_BREAK_EVENT:
case CTRL_CLOSE_EVENT:
case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT:
Beep(750, 300);
return TRUE;
default:
return FALSE;
}
}
Когда я закрываю окно, Beep выполняется, но когда я нажимаю Ctrl+C, Beep делает и не выполняется, и исключение. Но я не уверен в этом. < /P>
Как мне решить эту проблему? Итак, это возможно? Если да, то как это сделать?

Подробнее здесь: https://stackoverflow.com/questions/794 ... -c-runtime
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»