代码之家  ›  专栏  ›  技术社区  ›  fretje

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

  •  3
  • fretje  · 技术社区  · 17 年前

    我尝试了以下方法:

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

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

    但这两个表达式的计算结果似乎都为TRUE,而不管CC2boBox是下拉列表还是下拉列表。

    2 回复  |  直到 15 年前
        1
  •  6
  •   Shino C G    17 年前

    使用以下代码

    if ((m_MyComboBox.GetStyle() & 3) == CBS_SIMPLE)
    {
        //SIMPLE
    }
    if ((m_MyComboBox.GetStyle() & 3) == CBS_DROPDOWN)
    {
        //DROPDOWN
    }
    if ((m_MyComboBox.GetStyle() & 3) == CBS_DROPDOWNLIST)
    {
        //DROPDOWNLIST
    }
    
        2
  •  5
  •   Serge Wautier    17 年前

    来自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;
    }