如何检查组合框是下拉列表还是下拉列表?

时间:2009-05-28 09:44:39

标签: c++ mfc combobox

有没有办法检索CComboBox的类型?

我需要知道它是“Dropdown”还是“Drop List”。

我尝试了以下内容:

if (m_MyComboBox.GetStyle() & CBS_DROPDOWN)
   // do some stuff

if (m_MyComboBox.GetStyle() & CBS_DROPDOWNLIST)
   // do some stuff

但无论CComboBox是下拉列表还是下拉列表,这两个表达式似乎都评估为TRUE。

2 个答案:

答案 0 :(得分:5)

使用以下代码

if ((m_MyComboBox.GetStyle() & 3) == CBS_SIMPLE)
{
    //SIMPLE
}
if ((m_MyComboBox.GetStyle() & 3) == CBS_DROPDOWN)
{
    //DROPDOWN
}
if ((m_MyComboBox.GetStyle() & 3) == CBS_DROPDOWNLIST)
{
    //DROPDOWNLIST
}

答案 1 :(得分:3)

来自winuser.h:

#define CBS_DROPDOWN          0x0002L
#define CBS_DROPDOWNLIST      0x0003L

你需要:

switch(m_MyComboBox.GetStyle() & CBS_DROPDOWNLIST)
{
  case CBS_SIMPLE:
    // do stuff
    break;

  case CBS_DROPDOWN:
    // do stuff
    break;

  case CBS_DROPDOWNLIST:
    // do stuff
    break;
}