代碼觸發clistctrl控件的NM_CLICK事件

   首先,這是個比較簡單的功能,也就是實現CListCtrl控件可以處理完當前行後自動換到下一行而且自已選中,思路很簡單,先給CListCtrl控件添加個NM_CLICK事件響應函數,手動或者自動都行。

   然後用代碼選中需要顯示的行,代碼如下:

   

m_List.SetFocus()
m_List.SetItemState(nItem,LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);

第一句需要添加,網上有的貼子寫選中行時沒有添加第一行,也就是沒有設置焦點,這樣第二句不會生效,也就是不會選中。

   選中之後,剩下的就是給窗口發事件通知了,其實我們這個事件的過程是當用戶手動點擊了List控件的某一行時,控件知道自己被點擊了,然後給父窗口發送事件通知,而父窗口收到通知後會查相應的事件響應,查找到對應的響應函數。所以,我們要做的就是模擬用戶單擊CListCtrl控件,給窗口發消息。

  代碼很簡單,如下:

 

NMLISTVIEW nmListView;
nmListView.iItem = nItem; //告訴響應函數選中的是第幾行,如果爲-1則爲不選中
nmListView.hdr.code = 事件類型(我們這裏寫NM_CLICK);
nmListView.hdr.idFrom = 控件ID;       nmListView.hdr.hwndFrom = 控件自己的窗口句柄;
::SendMessage(響應的窗口句柄,WM_NOTIFY,NULL,(LPARAM)&nmListView);

   嗯嗯。很簡單吧,雖然很簡單,但還是發出來,給有需要的同學用用!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章