奇怪~~关于combobox的问题,帮忙看看

jiju 2007-02-07 02:15:58
我用atl 做一个控件 (not support to mfc),我加了一个属性页,
在属性页上我用combobox 做一个颜色选择框.

我遇到的问题是
做成类后,combobox只在其下拉列表中画出颜色,而在combobox显示框(edit)中没有任何效果.........why??????


combobox 的属性设置为 CBS_DROPDOWNLIST|CBS_HASSTRINGS|CBS_OWNERDRAWFIXED


如果我在属性页类中直接使用
BEGIN_MSG_MAP(CXXXProp)
....
MESSAGE_HANDLER(WM_DRAWITEM, OnDrawItem)
....
这样没有问题,效果也出来了. 在combobox下拉列表中选择任何颜色,它将出现在combobox显示框(Edit)上


因为不止一个这样的combobox,我要把combobox做成一个类,
我测试3种方式,都有一样的问题:

//-----------超类化---------
class CMyComboBox : public CWindowImpl<CMyComboBox>
{
public:
CMyComboBox ();
virtual ~CMyComboBox ();
DECLARE_WND_SUPERCLASS(_T("MyComboBox "), _T("COMBOBOX"))
...
BEGIN_MSG_MAP(CMyComboBox )
MESSAGE_HANDLER(WM_DRAWITEM, OnDrawItem)
...
CMyComboBox m_MyComboBox;
m_MyComboBox.Create(*this, rccombox,L"MyComboBox",WS_VISIBLE | CBS_DROPDOWNLIST|WS_CHILD|CBS_OWNERDRAWFIXED , 0, 0);

combobox显示不出选中的颜色
//--------------子类化--------------------
同样,稍微改动类代码,子类化后
m_MyComboBox.SubclassWindow(GetDlgItem(IDC_test12) );
结果仍然相同

//----------------------------------
现在我有调头作了一个测试
我在属性页类中定义 CContainedWindow m_MyComboBox;
CXXXProp::CXXXProp() : m_MyComboBox(_T("COMBOBOX"), this, 1)
...
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_DRAWITEM, OnDrawItem)
...
发现也出现同样问题。


ps:做成类后WM_CTLCOLOREDIT不被触发,只有WM_CTLCOLORLISTBOX消息

我搞了一个晚上,没有搞懂,希望各位兄弟给点意见。
...全文
332 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiju 2007-02-10
  • 打赏
  • 举报
回复
还没有人答...晕
完事,走人.
jiju 2007-02-08
  • 打赏
  • 举报
回复
re yjgx007
那我如何在combobox显示框上画颜色呢?
re crumpy
也没有...
crumpy 2007-02-07
  • 打赏
  • 举报
回复
那拦截一下WM_CTLCOLORSTATIC试试呢, 能得到吗?
yjgx007 2007-02-07
  • 打赏
  • 举报
回复
如果只是dropdown list不会有WM_CTLCOLOREDIT消息.
zzd8310 2007-02-07
  • 打赏
  • 举报
回复
帮你顶

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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