VC++ 显示或隐藏控制台窗口关闭按钮

发布时间:2023年12月18日

一个需要确保关闭时做处理的程序,应当禁止用户点击控制台窗口上面的关闭按钮,强制关闭程序,否则可能会产生严重的问题。

正确做法应为:控制台程序工作时禁止关闭按钮,控制台程序完全结束之前启用关闭按钮。(因为控制台可能在 PowerShell、CMD、VSConsole 之中被宿主化运行)

        bool Win32Native::EnabledConsoleWindowClosedButton(bool enabled) noexcept
        {
            HWND consoleWnd = GetConsoleWindow();
            if (NULL == consoleWnd)
            {
                return false;
            }

            HMENU systemMenu = GetSystemMenu(consoleWnd, FALSE);
            if (NULL == systemMenu)
            {
                return false;
            }

            if (enabled)
            {
                return EnableMenuItem(systemMenu, SC_CLOSE, MF_BYCOMMAND | MF_ENABLED) != FALSE;
            }
            else
            {
                return EnableMenuItem(systemMenu, SC_CLOSE, MF_BYCOMMAND | MF_GRAYED) != FALSE;
            }
        }

文章来源:https://blog.csdn.net/liulilittle/article/details/135070663
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。