CListControl的OnMouseMove和OnNcHitTest
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                CListControl的OnMouseMove和OnNcHitTest
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                實際案例如下:
?
將CListCtrl做成菜單樣式。需要處理當鼠標移到ClistCtrl上的事件。
處理邏輯這樣:當鼠標移動到CListCtrl區域時候,將CListCtrl上所有ITem置為非選中狀態,然后調用HitTest得到行數再將所選行置為選中狀態。當鼠標移出ClistCtrl區域時候,將原來選中狀態不變。
?
?
?
在實際做的過程中,在判斷鼠標是否移到CListCtrl客戶區域時候,誤用WM_NCHITTEST消息判斷,在OnNcHitTest里面處理選中邏輯。導致每次鼠標移出ClistCtrl會偶爾出現原來選中的行選中狀態會消失。PS:SetItemState(i, 0, -1) 取消選中狀態
?
?
后來在OnMouseMove處理,通過PtInRect判斷鼠標在客戶區,當在客戶區的時候再處理邏輯,效果實現。
?
?
原因是由于鼠標在移出ClistCtrl區域的時候,偶爾會接觸到CListCtrl的邊界,觸發WM_NCHITTEST,由于在OnNcHitTest的邏輯判斷是將所有行置為非選中狀態,并且所選行為-1,所以出現上述現象就不足為奇了
總結
以上是生活随笔為你收集整理的CListControl的OnMouseMove和OnNcHitTest的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 外设驱动库开发笔记8:GPIO模拟I2C
 - 下一篇: 关于数据库备份的问题