Winapi 将透明边框设置为CmboBox控件
我正在尝试设置Winapi 将透明边框设置为CmboBox控件,winapi,mfc,window,win32gui,Winapi,Mfc,Window,Win32gui,我正在尝试设置cmbobox控件的透明边框。 对于其他控件,如CEdit,可以使用控件属性执行此操作,但我无法找到cmbobox的任何解决方案。我希望结果如图所示 我找到了一段代码,希望它能帮助您: // YourComboBox.h : header file class CYourComboBox : public CComboBox { public: CEdit m_edit; CListBox m_listbox; protected: afx_
cmbobox
控件的透明边框。
对于其他控件,如CEdit
,可以使用控件属性执行此操作,但我无法找到cmbobox
的任何解决方案。我希望结果如图所示
我找到了一段代码,希望它能帮助您:
// 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);
}
以下字段的用途是什么?CEdit m_编辑;CListBox m_listbox;它是对应于编辑和
cmbobox
列表的变量成员。同意,您可以按照自己的意愿简单地修改它,例如,在您的情况下不需要m_listbox
;我在这里面临着某种崩溃。