clistctrl的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 16:02:48
我想做一个只可以单选的多列列表框,怎么做啊
-----------------------------------------------------------------
//初始化:
DWORD dwStyle;
dwStyle = m_bzlist.GetStyle();
dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT| LVS_SHOWSELALWAYS | LVS_SINGLESEL;
//dwStyle &= ~LVS_EX_CHECKBOXES;
m_bzlist.SetExtendedStyle(dwStyle);
m_bzlist.SetBkColor(RGB(0xec,0xf1,0xfd));
m_bzlist.SetTextBkColor(RGB(0xfe,0xFF,0xc6));
-----------------------------------------------------------------
我用上面这段代码弄出来的是一个带有复选框,兼且能用Ctrl多选的列表框,真郁闷
晕啊,真的是这样啊

而且还不只这个有重复,怎么会有这种事呢,郁闷

这个问题很有意思。
以前我们好像遇到过。

看以下属性的定义,(在……commctrl.h文件中,可在文件中找到)

#define LVS_SINGLESEL 0x0004

#define LVS_EX_CHECKBOXES 0x00000004

所以,复选效果是因为设置了LVS_SINGLESEL。

这个可能是VC的一个小bug。
目前我个人没有找到实现限制单选的合适解决方法,除非你修改commctrl.h中定义。再有就是用其他事件来控制。

个人意见,仅供参考!

创建资源的时候不要选择“多选”属性。或者用代码修改单选属性。