我点了一次listctrl里的项,ItemChanged处理函数执行了三次,为什么会这样?

yangchunyuycy 2004-05-09 04:16:02
我在里面放了几个图片,
第一次点了其中一个,ItemChanged处理函数执行了一次;
再点另外一个,ItemChanged处理函数执行了三次;
以后每点一个,ItemChanged处理函数都执行三次。
不知道这是怎么回事?
请大侠帮忙//bow
...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangchunyuycy 2004-05-09
  • 打赏
  • 举报
回复
可能我的后面那个问题没表达清楚。
不过还是谢谢了:)
pig1210127 2004-05-09
  • 打赏
  • 举报
回复
To:yangchunyuycy(ycy)

int nCurSelItem = this->GetNextItem(-1, LVNI_SELECTED);
ygzdev 2004-05-09
  • 打赏
  • 举报
回复
晕,学到了!!以前从来没有发现过这个问题
pig1210127 2004-05-09
  • 打赏
  • 举报
回复
pNMListView如何得来?
yangchunyuycy 2004-05-09
  • 打赏
  • 举报
回复
那我只想在改变了选项后去处理那个选定的项,有没有什么更简洁一点的方法实现?就是说有没有什么消息对这个变化是只发一次的?这个问题我另外加分。
flyelf 2004-05-09
  • 打赏
  • 举报
回复
楼上的正解
xiaoqiqixiao 2004-05-09
  • 打赏
  • 举报
回复
是这样的啊,state不光是选择的变化,还包括了焦点,还有其它的(不太用到)的变化啊
第1次是iOldItem从LVIS_SELECTED到0(取消选择)
第2次是iOldItem从LVIS_FOCUSED到0(取消焦点)
第3次是iNewItem从0到LVIS_SELECTED | LVIS_FOCUSED(获得选择,同时获得焦点)

估计你是想得到最新的选择的话,就需要这样
if( (pNMListView->uNewState & LVIS_SELECTED) &&
!(pNMListview->uOldState & LVIS_SELECTED) )
{
int nNewItem = pNMListView->iItem;
......
}
ygzdev 2004-05-09
  • 打赏
  • 举报
回复
晕!代码看看

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧