CListCtrl问题,有分!

lizero 2002-07-31 03:10:41
我的CListCtrl为Report style/single selection。我希望当用户选择另一个Item(即不是当前选中的Item)时,首先做一些检查,如果False则不做任何Item状态的改变,Item都仍保持原来的状态。
我考虑过可以用截获LVN_ITEMCHANGING来实现,但用户做如上的动作时会连续发两个消息,一个为当前Item丢失Seleted,一个为新的Item获得Selected。当我截获第一个消息处理返回1后,第二个消息仍然会发出(也许第二个消息早已发出等待),这样我就不得不做一些特殊的处理来保证状态的一致性。我觉得这样做不是很好,不知大家有没有更好得办法?
...全文
94 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ThisTimeThree 2002-08-01
  • 打赏
  • 举报
回复
gz,没有,sorry,同意楼上,改变*Result的值(缺省是零,改成非零数)应该可以
ThisTimeThree 2002-08-01
  • 打赏
  • 举报
回复
应该有OnSelectChange这个事件吧,我记不清具体,但一定是有的,我帮你查
lizero 2002-08-01
  • 打赏
  • 举报
回复
to ytfr():
其实我是希望按事件本来的意义做严格的定义和划分,尽可能的方便以后的维护。
如:当一个Item丢失Selected状态时,我就会进行一个Item丢失Selected状态所应进行的应用处理,而不考虑这个事件的源头是谁(鼠标?键盘?程序?)。因此按这层意义,我最希望的是应用处理失败时应Stop(程序不必再往下走),这样做是最符合实际的。不过目前看来可能做不到,只好采用一些变通的办法。
lizero 2002-08-01
  • 打赏
  • 举报
回复
现在虽然没有找到一个最好的方法,目前我已经可以采用一些变通的方法可以满足要求。
多谢大家耐心帮忙,给分!
ytfr 2002-07-31
  • 打赏
  • 举报
回复
为什么非要事先决定是不是改变呢?
选象改变了如果不满足在把选象改回来不可以吗
lizero 2002-07-31
  • 打赏
  • 举报
回复
to tonnyue(伊然) :
这个我也考虑过。在我的需求中一个Item对应一堆用户可编辑的数据,当用户切换另一个Item(或Unselect 任何Item时)我需要分步做处理,如果恢复为原来的Item则涉及到必须保存住用户原输入的各种数据状态。而且如果这样的话,我的程序相当于已经跑了一遍再恢复,即程序实际执行步骤与所期望的步骤(当出错时应停住)不是很吻合,对可能产生隐患。
tonnyue 2002-07-31
  • 打赏
  • 举报
回复
可不可以这样:
检查获得焦点的ITEM,若不是,则设回原来的ITEM。
可能这样会有一个闪烁
lizero 2002-07-31
  • 打赏
  • 举报
回复
to yuddian(切瑞西)、mfkzj():
LVN_ITEMCHANGED 是在Item的状态改变后才Notify,而我希望在Item状态改变前现做某些判断,在决定是否改变。

to wanglei888(阿笨猫) :
我也考虑用LVN_ITEMCHANGING消息来处理,但我在测试中发现如果我阻止一个Item丢失Selected状态时,会不止一次的收到同样的要求该Item丢失Selected状态的消息,我用如下表达式来判断是否一个Item将丢失Selected状态:
(pNMListView->uChanged & LVIF_STATE)
&&(pNMListView->uOldState & LVIS_SELECTED)
&&(!(pNMListView->uNewState & LVIS_SELECTED))

这样多次收到同样的消息会导致我自己的处理程序多次调用,不太符合要求。
大家还有什么好办法吗?
yuddian 2002-07-31
  • 打赏
  • 举报
回复
LVN_ITEMCHANGED 是可以的!!你可以在改写!!

wanglei888 2002-07-31
  • 打赏
  • 举报
回复
处理LVN_ITEMCHANGING消息,如果return TRUE不切换行,return FALSE允许改变。
mfkzj 2002-07-31
  • 打赏
  • 举报
回复
LVN_ITEMCHANGED 不就可以吗 它只有在变化以后才发消息
lizero 2002-07-31
  • 打赏
  • 举报
回复
LVN_ITEMCHANGED不行啊,它不能阻止Item状态得改变。
sans 2002-07-31
  • 打赏
  • 举报
回复
使用LVN_ITEMCHANGED
lizero 2002-07-31
  • 打赏
  • 举报
回复
没有人知道吗??

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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