【发布时间】:2021-07-11 04:32:54
【问题描述】:
【问题讨论】:
-
我在这里遇到了某种崩溃。
标签: winapi mfc window win32gui
【问题讨论】:
标签: winapi mfc window win32gui
我找到了一小段代码,希望对你有帮助:
// 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);
}
【讨论】:
CComboBox列表。同意,你可以随心所欲,例如,你不需要m_listbox。