2012-08-17 52 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 
}