ComboBox子类化问题

cdpc0202 2009-10-15 03:15:38

HBRUSH CMyCombobox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: 在此更改 DC 的任何属性

// TODO: 如果默认的不是所需画笔,则返回另一个画笔
if(nCtlColor == CTLCOLOR_STATIC && m_static.GetSafeHwnd() == NULL)
{
m_static.SubclassWindow(pWnd->GetSafeHwnd());
}
if(nCtlColor == CTLCOLOR_BTN)
{
int a = 5;
}
if(nCtlColor == CTLCOLOR_LISTBOX && m_list.GetSafeHwnd() == NULL)
{
m_list.SubclassWindow(pWnd->GetSafeHwnd());
m_list.SendMessage(WM_NCPAINT,0,0);
}
return hbr;
}


问题1:
MSDN描述A combo box consists of a list box combined with either a static control or edit control
DropList风格时 为什么
if(nCtlColor == CTLCOLOR_STATIC && m_static.GetSafeHwnd() == NULL)
{
m_static.SubclassWindow(pWnd->GetSafeHwnd());//调用不到?
}

combobox的drop-down arrow 是个按钮吗?可以子类化这个按钮吗?(CTLCOLOR_BTN 同样调用不到)

问题2:
子类化listbox后 static control or edit control不能显示当前选择的Item的文本。
这些问题如何解决?

...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WilsonChinaBug 2009-10-17
  • 打赏
  • 举报
回复
2楼的那个仁兄讲的很清楚哈
panpengpeng 2009-10-17
  • 打赏
  • 举报
回复
上面有高手,已经说的很清楚了,帮顶
lklwlklw 2009-10-17
  • 打赏
  • 举报
回复
2楼的那个仁兄讲的很清楚了,路过
jin_yan 2009-10-16
  • 打赏
  • 举报
回复
arrow is NOT a button. It is painted by Combobox's WM_PAINT handler
jin_yan 2009-10-16
  • 打赏
  • 举报
回复
ComboBox has no WM_CTLCOLORxxx message!!!
ListBox has WM_CTLCOLORLISTBOX
Edit has WM_CTLCOLOREIDT and WM_CTLCOLORSTATIC
you should subclass combobox and hook Listbox & Edit's WM_CTLCOLORxxx
uipower11 2009-10-15
  • 打赏
  • 举报
回复
路过~~~~~~~~~

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧