You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinAPI设置窗口样式时部分宏导致窗口不显示,如何禁用窗口大小调整

问题修复方案

问题根因

你遇到的窗口无法显示问题核心是参数使用场景混淆:

  • WNDCLASSEXW结构体的style字段属于窗口类样式,仅接受CS_开头的宏定义(比如CS_HREDRAW、CS_VREDRAW),你将WS_开头的窗口样式写入该字段属于参数传值错误,直接导致窗口类注册异常,窗口无法正常创建。
  • WS_CAPTION、WS_SYSMENU这类WS_开头的宏属于窗口实例样式,应该传入CreateWindowExW函数的第4个参数,而非窗口类的style字段。

修复步骤

步骤1:修正窗口类注册代码

将wcex.style改为合法的类样式,常规场景使用如下配置即可:

ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEXW wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);
    // 替换为合法的窗口类样式:水平/垂直大小变化时重绘窗口
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT1));
    wcex.hCursor        = LoadCursor(nullptr, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT1);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

    return RegisterClassExW(&wcex);
}

步骤2:修正窗口创建代码,实现禁止调整大小效果

禁止窗口调整大小的核心是去掉窗口样式中的WS_THICKFRAME(可拖拽调整的厚边框)属性,同时将窗口类参数改为你自己注册的szWindowClass,不要用系统自带的STATIC静态控件类:

HWND hWnd = CreateWindowExW(
        0,                              
        szWindowClass,                     // 改为你自己注册的窗口类名
        L"Learn to Program Windows",    
        // 窗口样式:包含标题栏、系统菜单、最小化/最大化按钮,没有可调整边框,无法拖拽改大小
        WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,            

        CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, // 可以固定宽高避免CW_USEDEFAULT的不确定大小

        NULL,       
        NULL,       
        hInstance,  
        NULL        
    );
// 窗口创建完成后需要调用ShowWindow显示
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

补充说明

如果需要对已创建的窗口动态修改样式,可以使用SetWindowLongPtrW函数修改GWL_STYLE属性,修改完成后调用SetWindowPos触发窗口边框刷新即可生效。


内容的提问来源于stack exchange,提问作者Cahir7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:36:04