MFC 窗口部分被覆盖怎么解决啊

在一个面板上创建了一个列表,然后设置了边框属性,但是每次拖动窗体后发现,列表的边框部分会被覆盖,复原窗体后也不会发生还原,为什么啊?

img

const DWORD dwViewStyle = WS_BORDER | WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_ALIGNTOP ;
    if (!m_listctrl.Create(dwViewStyle, rectDummy, this, 1))
    {
        TRACE0("未能创建列表\n");
        return -1;      // 未能创建
    }

列表窗体未设置正确的布局大小造成的,方便的话把代码发出来,告诉你如何修改。

既没有放代码,也没有放效果图,没看懂是什么问题

该回答引用 GPT
这种情况可能是由于使用了不正确的布局管理器所导致的。通常情况下,Swing 组件的边框是紧贴着组件本身的,并且不应受到容器大小的影响而改变。因此,如果您的边框在移动窗体时被裁剪,那么可能是您正在使用的布局管理器未正确处理组件的边框。

解决方法是:

  1. 使用更适合显示边框的布局管理器,例如 GridBagLayoutBorderLayout

  2. 调整设置的边框的位置和大小,确保其不会超出组件的范围。

  3. 检查是否存在其他组件重叠了原先设置的组件,如果有则调整它们的位置或大小。


m_listctrl.SetWindowPos(NULL, rectClient.left+5, rectClient.top+10, 190, 300,  SWP_NOZORDER | SWP_NOREDRAW);

把 | SWP_NOREDRAW去掉试试i