小编tuk*_*kra的帖子

关闭控制台窗口时优雅退出

当关闭按钮时,我正试图从控制台应用程序中正常退出.

bool done = false;

BOOL ctrl_handler(DWORD event)
{
    if (event == CTRL_CLOSE_EVENT) {
        done = true;
        return TRUE;
    }
    return FALSE;
}

int main()
{
    SetConsoleCtrlHandler((PHANDLER_ROUTINE)(ctrl_handler), TRUE);

    while (!done)
        do_stuff();

    cleanup();
    cout << "bye";
}
Run Code Online (Sandbox Code Playgroud)

我的处理程序被正确调用,但主线程之后没有恢复,所以"再见"永远不会发生.如果我改为捕获CTRL_C_EVENT并在控制台中点击^ C,则允许主线程继续并正常退出.有没有办法让主线程在控制台关闭时正常退出?

我也尝试过使用std :: signal,但它是一样的.适用于^ C但不适用于窗口关闭.

c++ windows winapi

6
推荐指数
1
解决办法
2614
查看次数

标签 统计

c++ ×1

winapi ×1

windows ×1