2012-08-17 88 views
0

我正在處理LVN_ITEMCHANGING消息,但每次檢查狀態發生變化時都會發出信號。LVN_ITEMCHANGING - 區分用戶輸入

我需要一種方式,用戶改變檢查狀態之間進行區分,並且我在呼喚ListView_SetCheckState

有沒有簡單的方法來做到這一點?我不知道的另一個訊息也許是?或者有沒有人有任何建議?

+0

能否通過添加一個設置了一些標誌,一個的thunk功能'ListView_SetCheckState',然後取消設置標誌? – jamesdlin 2012-08-17 18:04:06

+0

你使用MFC嗎? – 2012-08-17 18:04:23

+0

@ jamesdlin我不這麼認爲。而我沒有使用MFC。 – Josh 2012-08-17 18:05:36

回答

3

ListView_SetCheckState 發送 LVM_SETITEMSTATE消息。 LVN_ITEMCHANGING消息也是發送到控件的父窗口。這意味着該函數是同步的,並且在返回ListView_SetCheckState之前執行LVN_ITEMCHANGING處理程序。這允許使用簡單的布爾標誌,如:

bChangedByProgram = TRUE; 
ListView_SetCheckState(...); 
bChangedByProgram = FALSE; 

在LVN_ITEMCHANGING處理程序:

if (! bChangedByProgram) 
{ 
    // item state is changed by user 
}