在 MFC 對話框中:
OnCtlColor 中處理)。OnCtlColor 會針對對話框內所有子控制項被呼叫。若在處理 Static 控制項時直接回傳黑色筆刷,且未針對控制項類型/ID 進行判斷,其他控制項(如 ComboBox 的下拉列表也是以子視窗形式存在)同樣會套用此筆刷。
Bitmap。OnCtlColor 中針對該 Static 的特殊處理邏輯。OnCtlColor 撰寫複雜的控制項類型判斷邏輯。HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_MY_STATIC_VIDEO) { // 針對特定 ID
pDC->SetBkColor(RGB(0,0,0));
return (HBRUSH)GetStockObject(BLACK_BRUSH);
}
return hbr;
}
務必透過 GetDlgCtrlID() 精確識別目標控制項,避免誤傷其他控制項。