首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CList Ctrl控件消息问解决方案

2012-01-30 
CList Ctrl控件消息问 在一个对话框中,有一个CListCtrl控件,用来显示从数据库中查出的数据还有一个按钮当

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?

热点排行