【问题标题】:how to draw a transparent combobox?如何绘制一个透明的组合框?
【发布时间】:2012-08-10 02:21:52
【问题描述】:

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

【问题讨论】:

    标签: mfc combobox


    【解决方案1】:

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

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

    【讨论】:

    • 组合框的编辑框。还是我给它的背景色!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多