Winapi WTL ListView以编程方式设置项目状态

Winapi WTL ListView以编程方式设置项目状态,winapi,atl,wtl,Winapi,Atl,Wtl,在使用带有复选框的列表视图时,如何通过编程设置所有要选中的项 Listview复选框状态是通过项目状态的状态图像位设置的。您可以使用LVM_SETITEMSTATE消息更改项目状态,并可以通过传递-1作为索引将更改应用于所有项目 // The state-image index values: // 1 for the "unchecked" (cleared) state-image // 2 for the "checked" state-image int iState = 2; L

在使用带有复选框的列表视图时,如何通过编程设置所有要选中的项

Listview复选框状态是通过项目状态的状态图像位设置的。您可以使用
LVM_SETITEMSTATE
消息更改项目状态,并可以通过传递-1作为索引将更改应用于所有项目

// The state-image index values:
//  1 for the "unchecked" (cleared) state-image
//  2 for the "checked" state-image

int iState = 2;
LVITEM lvi;
lvi.stateMask = LVIS_STATEIMAGEMASK;
lvi.state = INDEXTOSTATEIMAGEMASK(iState);
SendMessage(hwndListView, LVM_SETITEMSTATE, -1, (LPARAM)&lvi);

Listview复选框状态是通过项目状态的状态图像位设置的。您可以使用
LVM_SETITEMSTATE
消息更改项目状态,并可以通过传递-1作为索引将更改应用于所有项目

// The state-image index values:
//  1 for the "unchecked" (cleared) state-image
//  2 for the "checked" state-image

int iState = 2;
LVITEM lvi;
lvi.stateMask = LVIS_STATEIMAGEMASK;
lvi.state = INDEXTOSTATEIMAGEMASK(iState);
SendMessage(hwndListView, LVM_SETITEMSTATE, -1, (LPARAM)&lvi);

或者,更简短地说,使用
CListViewCtrl::SetItemState
对此有什么想法,关于
lvi.iItem
?它是否也应该设置为
-1
?@Bart:索引在
wParam
消息参数中给出。看。@JonathanPotter是的,但是还有结构成员。未记录
wParam
iItem
是否应具有相同的值,以及如果它们不具有相同的值会发生什么情况<代码>#定义ListView_SetItemState(hwnd,i,pitem)(BOOL)SNDMSGA((hwnd),LVM_SetItemState,(WPARAM)(UINT)(i),(LPARAM)(LPLVITEMA)(pitem))再次,设置了索引
i
,但我们没有关于
iItem
的信息。我想知道的是,当值不一致时,我在multiselection中遇到了一些问题,但我不确定这是否是实际原因。或者,简而言之,使用
CListViewCtrl::SetItemState
对此有什么想法,关于
lvi.iItem
?它是否也应该设置为
-1
?@Bart:索引在
wParam
消息参数中给出。看。@JonathanPotter是的,但是还有结构成员。未记录
wParam
iItem
是否应具有相同的值,以及如果它们不具有相同的值会发生什么情况<代码>#定义ListView_SetItemState(hwnd,i,pitem)(BOOL)SNDMSGA((hwnd),LVM_SetItemState,(WPARAM)(UINT)(i),(LPARAM)(LPLVITEMA)(pitem))再次,设置了索引
i
,但我们没有关于
iItem
的信息。我想知道的是,当值不一致时,我在multiselection中遇到了一些问题,但我不确定这是否是实际原因。