奇怪~~关于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消息
我搞了一个晚上,没有搞懂,希望各位兄弟给点意见。