我正在处理该LVN_ITEMCHANGING
消息,但每次更改检查状态时都会发出信号。
我需要一种方法来区分用户更改检查状态和我打电话ListView_SetCheckState
有什么简单的方法可以做到这一点?可能是我不知道的不同消息?或者有人有什么建议吗?
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
}