c++ - 在 CListCtrl 上设置排序指示符正在清除列标题
问题描述
代码片段
HDITEM headerInfo = {0};
for (int colindex = 0; colindex < n; colindex++)
{
if (TRUE == pHDR->GetItem(colindex, &headerInfo))
{
headerInfo.mask = HDI_FORMAT;
// column match?
if (colindex == column)
{
if (ascending)
{
headerInfo.fmt |= HDF_SORTUP;
headerInfo.fmt &= ~HDF_SORTDOWN;
}
else
{
headerInfo.fmt |= HDF_SORTDOWN;
headerInfo.fmt &= ~HDF_SORTUP;
}
}
// switch off sort arrows
else
{
headerInfo.fmt &= ~HDF_SORTDOWN & ~HDF_SORTUP;
}
pHDR->SetItem(colindex, &headerInfo);
}
}
如果我删除headerInfo
初始化,它在调试模式下工作正常,但在发布模式下崩溃。
HDITEM
标头信息;
列标题是名称。点击后清除
解决方案
最后我得到了答案,我们必须应用HDI_FORMAT
before GetItem
。如果我们在 之后应用GetItem
,它将清除被屏蔽的标志。我进行了测试,它按预期工作。
HDITEM headerInfo = {0};
headerInfo.mask = HDI_FORMAT;
for (int colindex = 0; colindex < n; colindex++)
{
if (TRUE == pHDR->GetItem(colindex, &headerInfo))
{
// column match?
if (colindex == column)
{
if (ascending)
{
headerInfo.fmt |= HDF_SORTUP;
headerInfo.fmt &= ~HDF_SORTDOWN;
}
else
{
headerInfo.fmt |= HDF_SORTDOWN;
headerInfo.fmt &= ~HDF_SORTUP;
}
}
// switch off sort arrows
else
{
headerInfo.fmt &= ~HDF_SORTDOWN & ~HDF_SORTUP;
}
pHDR->SetItem(colindex, &headerInfo);
}
}
谢谢大家的建议和意见。
推荐阅读
- java - 如何将数据源 url 查询参数添加为 application.properties?
- postgresql - PostgreSQL 表导出自动化
- testing - 在常见的 spring 上下文中运行 Spock 测试
- kubernetes - 我们可以在 Kubernetes 中配置相同的节点作为主从节点吗
- intellij-idea - 查看哪些方法没有对 intelj idea 进行单元测试
- python - 创建一个 DataFrame 为参数'index'返回多个值
- php - 从用户名文件夹中获取图像
- javascript - 如何迭代文档中的所有 iframe?
- python-3.x - Python yagmail 认证配置
- angular - 如何限制用户直接在 Angular 应用程序中加载 url