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

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

正确做法应为:控制台程序工作时禁止关闭按钮,控制台程序完全结束之前启用关闭按钮。(因为控制台可能在 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;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值