завершение программы при прекращении ее работы в Visual Studio - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть приложение на Visual C ++, которое ловит оконные сообщения, когда программа завершается, например, закрывая окно нажатием «X» в правом верхнем углу.Здесь следует обычный процесс: WM_CLOSE -> WM_DESTROY -> WM_QUIT.

long FAR PASCAL MAIN_WindowProc( HWND     hWnd, 
                                 UINT     message, 
                                 WPARAM   wParam, 
                                 LPARAM   lParam ) 
{

...
case WM_CLOSE:
{

    if ( Game() && pcgaming()->active ) 
    {

         if ( Game()->MainStatus != MAINSTATUS_SHUTTINGDOWN ) 
        {

            Game()->Exit_To_Windows = true;

            Game()->ExitNow( EXIT_ESCAPE );

        }

    }

    return (long) 0;

}break;
...

Когда вы прекращаете запуск приложения в Visual Studio, либо нажав егоили Shift + F5, как программа на самом деле завершается?Есть ли сообщения, чтобы поймать, как WM_XXX?

1 Ответ

0 голосов
/ 27 сентября 2018

Когда вы нажимаете Shift + F5 (при условии, что вы запустились из Visual Studio), отладчик сразу и сразу убивает дочерний процесс.Никакое сообщение или уведомление не отправляются программе вообще.

Если вы начали с Ctrl + F5 и позже подключили вручную, то Shift + F5 отключился бы, и программа продолжила бы работать.Затем вы могли бы опросить IsDebuggerPresent () , поскольку вы не закрылись бы.Хотя неясно, почему вы хотите это сделать.

Вы можете проверить список всех функций , которые отладчик и отладчик могут использовать для связи, но это в основном все дляотладчик, чтобы отправить дополнительную отладочную информацию отладчику.Отладчик может знать, подключен ли отладчик, но не уведомляется, когда он собирается отсоединиться (или убить его).

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