如何绘制透明的组合框?

时间:2012-08-10 02:21:52

标签: mfc combobox

我有两个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;  
}

1 个答案:

答案 0 :(得分:2)

如果没有子类化或做更多的工作,我认为你不会得到一个好的结果。 MFC中的透明控件并不容易。

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