CListCtrl::SetItemState 是一个 MFC(Microsoft Foundation Classes)方法,用于设置 CListCtrl 控件中的列表项状态。在这里,您正在尝试设置第二行(索引为 1)为选中和聚焦状态。要正确显示选中状态,请确保您的 CListCtrl 控件具有 LVS_SHOWSELALWAYS 样式。这个样式会确保控件在失去焦点时仍然显示选中项。
要设置 LVS_SHOWSELALWAYS 样式,请在创建 CListCtrl 时,将它添加到控件的样式中。在对话框的 .cpp 文件中,您可以在 DoDataExchange 函数中添加此样式:
void CYourDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_YOUR_LISTCTRL, m_listCtrl);
m_listCtrl.ModifyStyle(0, LVS_SHOWSELALWAYS);
}
其中 IDC_YOUR_LISTCTRL 是您的 CListCtrl 控件的资源 ID。
如果您已经添加了 LVS_SHOWSELALWAYS 样式,但仍然没有看到选中的行,请尝试调用 CListCtrl::Update 或 CListCtrl::RedrawItems 方法来强制重绘列表项:
BOOL b1 = mylist4.SetItemState(1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
mylist4.Update(1);
// 或者
mylist4.RedrawItems(1, 1);
最后,请确保在设置选中状态之前,CListCtrl 控件已经包含了至少两行数据。如果没有足够的数据行,设置状态的操作将不起作用。 |