Win32控制台禁用系统菜单按钮

4

我想禁用/灰掉控制台窗口上的系统菜单按钮,尤其是最小化按钮。我已经尝试了 另一个线程 上提到的函数,但即使使用它们,控制台窗口仍然没有被灰掉的最小化按钮。我还查看了 DeleteMenu() 函数,但它似乎没有选项可以灰掉按钮。

这是测试代码:

#include <Windows.h>
using namespace std;


int main()
{
    //SetConsoleTitle(L"CPU Information");

    HWND consoleWindow = GetConsoleWindow();
    HMENU hMenu = GetSystemMenu(consoleWindow, FALSE);

    EnableMenuItem(hMenu, SC_MINIMIZE, MF_BYCOMMAND | MF_GRAYED);
    DrawMenuBar(consoleWindow);
    return 0;
}
1个回答

11

使用GetWindowLong和SetWindowLong FTW!

int main(int argc, _TCHAR* argv[])
{
    HWND consoleWindow  = GetConsoleWindow();
    LONG style = GetWindowLong(consoleWindow , GWL_STYLE);
    style = style & ~(WS_MINIMIZEBOX);
    SetWindowLong(consoleWindow, GWL_STYLE, style);

    return 0;
}

这将使窗口右上角的最小化按钮和系统菜单中的“最小化”选项变灰并禁用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接