LVN_ITEMCHANGING - 区分用户输入

时间:2012-08-17 17:56:41

标签: c++ windows winapi

我正在处理LVN_ITEMCHANGING消息,但每次检查状态发生变化时都会发出消息。

我需要一种方法来区分用户更改检查状态,以及我调用ListView_SetCheckState

有没有简单的方法可以做到这一点?也许我不知道的另一条消息?或者有人有任何建议吗?

1 个答案:

答案 0 :(得分: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
}