2012-08-10 57 views
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; 
} 

回答

2

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

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

+0

谢谢,但“编辑框”问题仍未解决 – 2012-08-23 08:52:50

+0

什么是“编辑框”问题? – 2012-08-23 09:41:21

+0

组合框的编辑框。它仍然是我给它的背景颜色! – 2012-08-23 10:03:34