1

我正在处理该LVN_ITEMCHANGING消息,但每次更改检查状态时都会发出信号。

我需要一种方法来区分用户更改检查状态和我打电话ListView_SetCheckState

有什么简单的方法可以做到这一点?可能是我不知道的不同消息?或者有人有什么建议吗?

4

1 回答 1

3

ListView_SetCheckState发送LVM_SETITEMSTATE 消息。LVN_ITEMCHANGING 消息也被发送到控件的父窗口。这意味着,该函数是同步的,并且 LVN_ITEMCHANGING 处理程序在 ListView_SetCheckState 调用返回之前执行。这允许使用简单的布尔标志,例如:

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

在 LVN_ITEMCHANGING 处理程序中:

if ( ! bChangedByProgram )
{
    // item state is changed by user
}
于 2012-08-17T18:42:36.527 回答