Win32窗体属性设置,取消最大最小化按钮,禁止调整大小

⌚Time: 2023-01-14 14:40:28

👨‍💻Author: Jack Ge

使用GetWindowLong()获取窗体风格属性


DWORD dwStyle = GetWindowLong(hwnd, GWL_STYLE);

取消风格WS_SIZEBOX


dwStyle &= ~(WS_SIZEBOX); 

或者

dwStyle ^= WS_SIZEBOX;

设置风格WS_SIZEBOX


dwStyle |= WS_SIZEBOX;

使用SetWindowLong设置窗体风格属性


SetWindowLong(hwnd, GWL_STYLE, dwStyle);

取消WS_SIZEBOX属性或WS_THICKFRAME属性都可以使窗体不可调整大小

例子


DWORD dwStyle = GetWindowLong(hwnd, GWL_STYLE);

dwStyle ^= WS_SIZEBOX;//设置窗体不可调整大小

SetWindowLong(hwnd, GWL_STYLE, dwStyle);

其它的属性设置


dwStyle ^= WS_MINIMIZEBOX;//设置窗体取消最小化按钮

dwStyle ^= WS_MAXIMIZEBOX;//设置窗体取消最大化按钮

dwStyle ^= WS_DLGFRAME;//设置窗体取消标题栏边框

也可以在窗体创建时设置窗体属性,与属性异或操作是取消属性,与属性或操作是添加属性


    HWND hwnd = CreateWindowEx(

        0,                              // Optional window styles.

        CLASS_NAME,                     // Window class

        "testwindow",    // Window text

        WS_OVERLAPPEDWINDOW^WS_DLGFRAME,//取消标题栏

        // Size and position

        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,



        NULL,       // Parent window    

        NULL,       // Menu

        hInstance,  // Instance handle

        NULL        // Additional application data

        );

对于有背景的窗体,在窗体创建结束后再取消WS_SIZEBOX属性,会导致背景图片有白色边框,而在创建窗体时取消WS_SIZEBOX属性就不会有这种情况

https://learn.microsoft.com/en-us/windows/win32/winmsg/window-styles