diff --git a/server/2015Remote/CListCtrlEx.cpp b/server/2015Remote/CListCtrlEx.cpp index d2877e2..9065a48 100644 --- a/server/2015Remote/CListCtrlEx.cpp +++ b/server/2015Remote/CListCtrlEx.cpp @@ -160,6 +160,9 @@ void CListCtrlEx::SetColumnVisible(int nCol, BOOL bVisible) if (m_Columns[nCol].CanHide || bVisible) { // 不允许隐藏的列只能设为可见 m_Columns[nCol].Visible = bVisible; AdjustColumnWidths(); + // 列数变化后完整重绘(含背景擦除),否则最后一列右侧会残留旧列残影。 + ScopedEraseBkgnd scope(*this); + RedrawWindow(NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_UPDATENOW); } } } @@ -230,6 +233,11 @@ void CListCtrlEx::ToggleColumnVisibility(int nColumn) // 重新调整列宽 AdjustColumnWidths(); + + // 列数变化后完整重绘(含背景擦除),否则最后一列(TLS 等)右侧会残留旧列残影。 + // 与 OnSize 中 needRefresh 分支相同的处理:临时放行背景擦除 + 全量 RedrawWindow。 + ScopedEraseBkgnd scope(*this); + RedrawWindow(NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_UPDATENOW); } void CListCtrlEx::LoadColumnVisibility()