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

Windows环境直接运行EXE时子窗口按钮不显示,但MSYS2控制台启动正常的问题求助

Windows环境直接运行EXE时子窗口按钮不显示,但MSYS2控制台启动正常的问题求助

各位大佬好,我遇到一个挺诡异的Windows编程问题,想请教下大家:

我在代码里给子窗口hwnd_top创建自绘按钮,相关代码如下:

auto create_button=[](HWND hwnd, HWND hwnd_parent, RECT rect, BUTTON id){
    if(hwnd=CreateWindow(L"button", L"",
        WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
        rect.left, rect.top,
        rect.right, rect.bottom,
        hwnd_parent,
        (HMENU) id,
        nullptr, nullptr);!hwnd)
        throw ERROR_BUTTON;
};

create_button(button.menu, hwnd_top,{20,20,40,40}, BUTTON::MENU);

子窗口hwnd_top的创建代码是:

hwnd_top = CreateWindowExW(0,wc.lpszClassName,(LPCTSTR) NULL, WS_CHILD, GET_INTO_RECT(wnd_rect_top), hwnd, nullptr, wc.hInstance,this)

现在的问题是:通过MSYS2控制台启动生成的run.exe时,按钮显示完全正常;但直接双击EXE运行的话,子窗口上的按钮就彻底消失了。

我一开始怀疑是DLL依赖的问题,但奇怪的是程序本身能正常启动,用Dependency Walker检查也没发现异常。我的编译命令是:

g++ -g main.cpp Window.cpp -o run.exe -mwindows -municode -lMsimg32 -lGdiplus

不管是在MSYS2环境还是CMD里编译,结果都是一样的。另外我还测试了下,如果把按钮创建在主窗口上,不管怎么启动都能正常显示,只有子窗口上的按钮出现这个问题。

有没有大佬遇到过类似的情况,或者能给我点排查方向?

备注:内容来源于stack exchange,提问作者I101I

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 11:13:03