昨天修改一个很久以前的程序,添加功能遇到这样一个问题。
ListControl控件中添加多选按钮风格,通过左键单击、双击、右键单击、双击都是可以选中打钩的。
m_list2.SetCheck(nItem,true);//nItem为行号
这个函数设置为不选中。
void CSave::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) //左键单击
{
/*
此处函数功能类似为不能在某行的多选按钮中设置选中
*/
m_list2.SetCheck(nItem,true);//nItem为行号
*pResult = 0;
}
void CSave::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult) //左键双击
{
OnClickList2( pNMHDR, pResult);
*pResult = 0;
}
void CSave::OnRclickList2(NMHDR* pNMHDR, LRESULT* pResult) //右键单击
{
OnClickList2( pNMHDR, pResult);
*pResult = 0;
}
void CSave::OnRdblclkList2(NMHDR* pNMHDR, LRESULT* pResult) //右键双击问题
{
OnClickList2( pNMHDR, pResult);
*pResult = 0;
}
测试中发现右键双击事件还是会出现选中多选按钮的情况,测试响应别的函数都没有问题。
具体原因不知道,要实现右键双击不选中多选按钮的解决办法:将
m_list2.SetCheck(nItem,true);//不选中
改为
m_list2.SetCheck(nItem,false);//选中
对,没错就是右键双击响应事件中,true是选中,false为不选中,和别的鼠标按键事件完全想反。
PS:vc6.0测试