在毕业设计中,发现,listview中每改变一次选择,OnItemchanged函数执行了,三次,后来查证之后发现,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;
    ……
}

Tagged with:
 

2 Responses to CListview对NM_ITEMCHANGED消息的响应

  1. 北宫赫 says:

    你这BLOG的BUG真多,动不动就“找不到网页”了。

  2. 殷远超 says:

    那是因为你网速太慢吧!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>