读书人

CList Ctrl控件消息问解决方案

发布时间: 2012-01-30 21:15:58 作者: rapoo

CList Ctrl控件消息问

在一个对话框中,有一个CListCtrl控件,用来显示从数据库中查出的数据
还有一个按钮
当第一次点击按钮时,修改CListCtrl控件中一条记录的第一个字段,如在这个数据后加一个字
当第二次点击按钮时,将刚加的那条记录的那个字段的字去掉
在CSDN上他们 告诉我这样实现:
m_bFirst = true;//加在类的构造函数里

onbutton1clieked()
{
if(m_bFirst)
{
第一次点击按钮操作
}
else
{
第2次点击按钮操作
}
m_bFirst = !m_bFirst;
}

我按照这样的说法修改了,如果第一次对第一条记录操作,第二次还对第一条记录操作没有问题,如果我第一次对第一条记录操作,第二次对第二条记录操作,结果就乱了!
///////////////////
又有朋友告诉我:

既然你第二次对第二条记录操作,那你可以添加个消息
在listbox进行选择第几条,函数里重新置成m_bFirst = true
listbox的消息多看看吧 肯定有这个消息的

这样 就可以确认你是在同一条记录里 点2次按钮的时候才会进行删除。
///////////////////

高手们帮忙分析一下呗!非常感谢!!!后面的说法应该如何实现,问题解决就给分




[解决办法]
在定义m_bFirst = true的地方不如变成
static bool m_bFirst = true试试
[解决办法]
如果只是在点击某项把m_bFirst = TRUE;的话!
可以通过class wizard 添加ListCtrl的NM_CLICK的消息映射
然后在映射函数里添加下面的代码就可以了!
NMLISTVIEW* pitem = (NMLISTVIEW *)pNMHDR;

if(pitem-> iItem == -1)
{
return ;
}

m_bFirst = TRUE;


[解决办法]
添加LVN_ITEMCHANGED对m_bFirst操作即可~
[解决办法]
如果只是在点击某项把m_bFirst = TRUE;的话!
可以通过class wizard 添加ListCtrl的NM_CLICK的消息映射
然后在映射函数里添加下面的代码就可以了!
NMLISTVIEW* pitem = (NMLISTVIEW *)pNMHDR;

if(pitem-> iItem == -1)
{
return ;
}

m_bFirst = TRUE;

=========================================

这个就已经OK了
[解决办法]
你需要跟踪当前被选择的记录
POSITION m_pos;
每一次点击的时候要判断m_pos是否发生变化,如果发生了变化就m_bFirst = TRUE;
[解决办法]
为真,加入字,
设为假
再点,OK,为假,把原先字再删除.
再设为真.OK?

读书人网 >VC/MFC

热点推荐