我需要判断Combo控件的样式。
我是这样写的
DWORD dwExStyle = GetWindowLong(pComboBox->GetSafeHwnd(), GWL_STYLE);
DWORD  value = dwExStyle & CBS_DROPDOWNLIST;
if (value)
AfxMessageBox("CBS_DROPDOWNLIST");但是结果不对。请教高手指点

解决方案 »

  1.   

    if ((dwExStyle & CBS_DROPDOWNLIST) == CBS_DROPDOWNLIST)
      

  2.   

    楼主不妨用GetStyle() 试试看有效果么。
      

  3.   

    看定义
    #define CBS_SIMPLE            0x0001L
    #define CBS_DROPDOWN          0x0002L
    #define CBS_DROPDOWNLIST      0x0003L所以 DWORD dwStyle = pComboBox->GetStyle()
    if ((dwStyle & CBS_DROPDOWNLIST) == CBS_DROPDOWNLIST)
    {
    ……
    }
    else if(dwStyle & CBS_DROPDOWN)
    {
    ……
    }
    else if(dwStyle & CBS_SIMPLE)
    {
    ……
    }
    else
    {
    }
      

  4.   

    楼主注意了:
    #define CBS_DROPDOWN          0x0002L
    #define CBS_DROPDOWNLIST      0x0003L
    看上面的定义,CBS_DROPDOWN风格的最后两位为 10,CBS_DROPDOWNLIST风格的最后两位是11,也就是说:CBS_DROPDOWNLIST风格中同时包含了CBS_DROPDOWN风格。
    所以要判断ComboBox是CBS_DROPDOWNLIST还是CBS_DROPDOWN风格就不能那样来判断了,
    判断方法:
    dwExStyle &=3;
    if(dwExStyle == 1)
    {
    CBS_SIMPLE风格

    else if(dwExStyle == 2)
    {
    CBS_DROPDOWN风格
    }
    else if(dwExStyle == 3)
    {
    CBS_DROPDOWNLIST风格
    }