COLORREF clr = dc.SetTextColor(dc.GetBkColor()); // clr 為何是 0(黑色)?
dc.TextOut(..., m_strLine); // 用背景色輸出文字(不可見)
// ...
dc.SetTextColor(clr); // 恢復文字顏色為黑色
CDC::SetTextColor(COLORREF crColor) 返回值是設置前的文字顏色,而非新設置的顏色。
dc.GetBkColor() 返回背景色(假設白色 0xFFFFFF)。dc.SetTextColor(白色) 將文字顏色設為白色,**返回值為之前的文字顏色**(默認黑色 0x000000),賦給 clr。TextOut 用白色文字在白色背景上繪製 → 不可見。SetTextColor(clr) 恢復文字顏色為黑色 → 後續繪製可見。這是經典的「保存現狀 → 臨時修改 → 恢復現狀」模式,常用於橡皮筋選框、反色顯示等場景。MSDN 文檔明確說明:「返回值為先前的文字顏色」。