导航
  • 主页
  • VC综合技术
  • MFC新技术
  • 互联网技术
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC++技术资源

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后,第二个消息仍然会发出(也许第二个消息早已发出等待),这样我就不得不做一些特殊的处理来保证状态的一致性。我觉得这样做不是很好,不知大家有没有更好得办法?
...全文
66 点赞 收藏 14
写回复
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
没有人知道吗??
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

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