我有两个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;
}
答案 0 :(得分:2)
如果没有子类化或做更多的工作,我认为你不会得到一个好的结果。 MFC中的透明控件并不容易。
无论如何,如果你想在组合的下拉列表中获得透明背景,你需要使用CTLCOLOR_LISTBOX而不是CTLCOLOR_EDIT。和CTLCOLOR_BTN用于下拉按钮。