停止OnCtlColor()改变组合框(编辑控件)的“文本颜色”

时间:2012-08-09 10:08:05

标签: mfc combobox

MFC组合框实际上是一种奇怪的设计。

我使用“drop list”类型的组合框。

HBRUSH CValueInputDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  
{
    HBRUSH hBrush = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
    if (nCtlColor == CTLCOLOR_STATIC || nCtlColor == CTLCOLOR_EDIT)
    {
        pDC->SetTextColor(RGB(255, 255, 255));  
        pDC->SetBkMode(TRANSPARENT);  
        hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
    }    
    return hBrush;
}

我所做的就是拥有我的所有CStatic和CEdit颜色白色。

但我发现我也将组合框的编辑更改为白色。

这就是我不想要的。

这就是我不想要的。

我无法阻止它
pWnd->GetDlgCtrlID() == IDC_COMBO

它太不友好了。这个组合框。

1 个答案:

答案 0 :(得分:4)

“编辑”框是组合框的子项。试试这个:

pWnd->GetParent()->GetDlgCtrlID() == IDC_COMBO