包含 CDockablePane 嵌入 CMFCToolbar 的 MDI 子窗口,最小化後恢復,工具欄區域出現白塊或殘留圖像,未正確重繪。
CDockablePane 在 OnSize 中調整了工具欄佈局,但未處理 WM_PAINT 消息,導致非客戶區或客戶區背景未重繪。
在 CToolboxPane 中重寫 OnPaint(或 OnDraw),調用基類繪製並確保工具欄重繪:
void CToolboxPane::OnPaint()
{
CPaintDC dc(this); // device context for painting
// 調用基類默認繪製(包含背景、邊框)
CDockablePane::OnPaint();
// 強制工具欄重繪
if (m_toolbar.GetSafeHwnd())
{
m_toolbar.RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ALLCHILDREN);
}
}
或在 OnSize 末尾添加 RedrawWindow() 觸發立即重繪。