如果我想记录每次选中和取消选中的选项,应该如何修改代码?
时间: 2024-09-14 13:04:39 浏览: 33
如果你想在每次选中或取消选中选项时都记录下这个操作,可以添加额外的数据结构来存储每个选项的状态,比如在视图类中维护一个关联数组(如map),键为选项索引,值表示选项当前是否被选中。
首先,在`YourViewClass`中定义一个成员变量来存储状态:
```cpp
std::map<int, bool> m_CheckedItems;
```
然后,在`OnCheckItem`函数里更新这个状态:
```cpp
void YourViewClass::OnCheckItem(NMHDR* pNMHDR, LRESULT* pResult)
{
// ... (之前的代码)
int itemIndex = lpListViewItem->iItem;
bool isChecked = (lpListViewItem->uNewState & LVIS_FOCUSED) != 0;
// 更新状态并保存到映射中
m_CheckedItems[itemIndex] = isChecked;
// ... (其他的处理逻辑)
}
// 如果你想记录哪次选中或取消了某个选项,可以在需要的地方查询映射
if (m_CheckedItems.find(itemIndex) != m_CheckedItems.end())
{
if (m_CheckedItems[itemIndex])
{
std::cout << "Option " << itemIndex << " was selected.\n";
}
else
{
std::cout << "Option " << itemIndex << " was deselected.\n";
}
}
*pResult = TRUE; // 回应窗口的消息
```
现在,每当你改变一个选项的状态,都会自动更新这个记录。
阅读全文