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