首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-02-15 
奇怪~~关于combobox的问题,帮忙看看我用atl做一个控件(notsupporttomfc),我加了一个属性页,在属性页上我用

奇怪~~关于combobox的问题,帮忙看看
我用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消息

我搞了一个晚上,没有搞懂,希望各位兄弟给点意见。

[解决办法]
帮你顶
[解决办法]
如果只是dropdown list不会有WM_CTLCOLOREDIT消息.
[解决办法]
那拦截一下WM_CTLCOLORSTATIC试试呢, 能得到吗?

热点排行