0

我有两个 Cedit 和一个 CCombobox。

你可以看到下面的代码,我将文本颜色设置为黄色。

然后我使用透明文本背景,也是透明背景。

它对 Cedit 非常有效(我不在乎输入内容时的变化)。

但我注意到pDC->SetBkMode(TRANSPARENT);对我的 CCombobox 无能为力。

我真的不想继承 CComboBox 来完成透明背景。

还是我需要使用drawitem???

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

1 回答 1

2

我认为如果不进行子类化或做更多工作,您将无法获得良好的结果。MFC 中的透明控件并非易事。

无论如何,如果你想在组合的下拉列表中获得透明背景,你需要使用 CTLCOLOR_LISTBOX 而不是 CTLCOLOR_EDIT。CTLCOLOR_BTN 为下拉按钮。

于 2012-08-17T06:41:30.980 回答