首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将透明边框设置为CComboBox控件

将透明边框设置为CComboBox控件
EN

Stack Overflow用户
提问于 2021-04-16 14:44:39
回答 1查看 80关注 0票数 0

我正在尝试设置CComboBox控件的透明边框。对于像CEdit这样的其他控件,可以使用控件属性做到这一点,但我找不到任何针对CComboBox的解决方案。我希望结果如图所示。

EN

回答 1

Stack Overflow用户

发布于 2021-04-16 17:04:46

我找到了一小段代码,希望能对你有所帮助:

代码语言:javascript
复制
// YourComboBox.h : header file
class CYourComboBox : public CComboBox
{
public:
    CEdit      m_edit;
    CListBox   m_listbox;

protected:
    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    afx_msg void OnDestroy();
    ...
};

// YourComboBox.cpp : implementation file
HBRUSH CYourComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    if (nCtlColor == CTLCOLOR_EDIT)
    {
        //Edit control
        if (m_edit.GetSafeHwnd() == NULL)
            m_edit.SubclassWindow(pWnd->GetSafeHwnd());
    }
    if (nCtlColor == CTLCOLOR_LISTBOX)
    {
        //ListBox control
        if (m_listbox.GetSafeHwnd() == NULL)
            m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
    }

    RemoveEditBorder();

    HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
    return hbr;
}

void CYourComboBox::OnDestroy()
{
    if (m_edit.GetSafeHwnd() != NULL)
        m_edit.UnsubclassWindow();
    if (m_listbox.GetSafeHwnd() != NULL)
        m_listbox.UnsubclassWindow();

    CComboBox::OnDestroy();
}

void CYourComboBox::RemoveEditBorder()
{
    m_edit.ModifyStyle(WS_BORDER, 0);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67120307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档