- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何保持CListCtrl的水平滚动条位置?我会定期转储并重新填充列表控件的内容,因此无需显式记住旧位置并将其恢复,滚动只返回到左上角。
我早些时候问了一个相关的问题CListCtrl: How to maintain scroll position?,但是当时我只对垂直滚动位置感兴趣,提供的答案解决了这个问题。但是,现在我想记住并恢复水平滚动位置(以及垂直滚动)。
最佳答案
首先,您可能会觉得更简单。重新填充列表之前和重新填充强制列表控件之后,必须保存位置以更新新内容。
另外,您可能会考虑新内容可能具有不同数量的项目的事实,因此您必须相对于最大滚动位置设置位置。
示例代码如下:
SCROLLINFO sbiBefore = { sizeof(SCROLLINFO) };
SCROLLINFO sbiAfter = { sizeof(SCROLLINFO) };
// get scroll info before
sbiBefore.fMask = SIF_ALL;
m_List.GetScrollInfo(SB_HORZ, &sbiBefore);
RenewContents();
// force control to redraw
int iCount = m_List.GetItemCount();
m_List.RedrawItems(0, iCount);
// get the scroll info after
sbiAfter.fMask = SIF_ALL;
m_List.GetScrollInfo(SB_HORZ, &sbiAfter);
double dRatio = (double)sbiAfter.nMax / sbiBefore.nMax;
// compute relative new position
sbiAfter.fMask = SIF_POS;
sbiAfter.nPos = dRatio * sbiBefore.nPos;
// set new position
BOOL bSet = m_List.SetScrollInfo(SB_HORZ, &sbiAfter);
关于winapi - CListCtrl:如何保持水平滚动位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941173/
我有一个CListCtrl(报告样式),可以在其中清除列表并在特定时间重新填充它。在执行此操作时,我想保持垂直滚动位置。我发现有两种方法看起来很有希望: EnsureVisible() GetScro
如何更改 Clistctrl 项(报 TableView )的文本颜色? 最佳答案 您需要处理 NM_CUSTOMDRAW消息并更改该处理程序中的文本颜色。 有关示例,请参阅 this article
我有一个 CListCtrl,其中包含大约 2500 个不同的元素,其中包含一个 48x48 的图标和文本。 由于数据量大,我将其实现为提供的虚拟列表 ON_NOTIFY(LVN_GETDISPINF
如何保持CListCtrl的水平滚动条位置?我会定期转储并重新填充列表控件的内容,因此无需显式记住旧位置并将其恢复,滚动只返回到左上角。 我早些时候问了一个相关的问题CListCtrl: How to
我有一个显示多个系统的多个数据的 clistctrl。不同系统只能选择 1 个项目。 最初,clistctrl 会加载从不同系统的控件中选择的第一个项目。 但是当我在更改模型中的数据并设置选择后通过单
我在图标 View 中使用 CListCtrl,但它会水平滚动: 1 3 5 7 --> 2 4 6 8 --> 我宁愿它水平滚动: 1 2 3 4 5 6 | | V V 有办法吗? 最佳答案 将设
我正在为 Windows Mobile 创建 MFC 应用程序,但不知道如何为列表控件 (CListCtrl) 启用多选。在属性面板中 Single Selection 设置为 False 但仍然无法
我必须根据 CListViewCtrl 中的值启用/禁用对话框上的按钮。基于所选行。我做到了这一点: NOTIFY_HANDLER(IDC_LIST, LVN_ITEMCHANGED, OnMyLis
我需要在 MFC 中创建一个 ListControl,每行具有不同的列数。我该怎么做? 最佳答案 那是不可能的。解决方法很简单,只是不要在子项中放置任何文本。 关于c++ - 自定义 CListCtr
如何使用标题文本获取项目的索引号?我正在使用 MFC 的 CListCtrl 类。我有项目的标题文本,我可以获取该项目的索引然后更新其文本吗?如果您能提供示例,将会很有帮助。 最佳答案 CListCt
CMyListCtrl 处于虚拟数据模式和所有者绘制。当控件需要数据时,将发送一个 LVN_GETDISPINFO 通知。 下面的代码工作正常,除了它多次显示每一行。 文档说如果我设置项目的掩码的 L
有一个CListCtrl带有SetExtendedStyle (LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT),单选是false。我希望能够用鼠标选择多行。从空白区域
我有一个包含多个列的 CListCtrl,所有列都可以作为排序依据。我想添加 up 和 down 图标,以便清楚当前按哪一列排序以及朝哪个方向排序;很像 Windows 资源管理器。我的想法是向列名添
我正在使用 CListCtrl 控件在我的 MFC 应用程序中显示信息。目前,我在 SetExtendedStyle 中设置了 LVS_EX_CHECKBOXES,因此控件中的所有行旁边都有一个复选框
我目前有 NM_CUSTOMDRAW 消息调用一个函数来在报告模式下为 listctrl 的行着色。我可以检测何时选择了一行并自己为其着色,但是不会为选定的单元格调用此方法,因此我无法为该单元格着色。
谁能帮我知道,CListCtrl::GetItemData() 在 MFC、VC++ 中有什么用? 我查阅了 MSDN 描述,但不够清楚。 如果有人可以提供简短的解释和一些示例,那就太好了并且会有很大
如何使 CListCtrl 自动调整其列的宽度?通常,当列表中的项目太长时,后端会从 View 中消失,用户必须手动调整相应列的宽度。有没有办法通过代码来做到这一点? 最佳答案 自动调整列大小很容易:
我想将 CListCtrl 控件的任何单元格的字体更改为粗体。任何人都可以告诉如何为 CList Ctrl 做到这一点。 我已经为 CTreeCtrl 做了这个,就像这样 pTC->SetItemSt
我想为列表的任何列使用 CListCtrl.EditLabel()。我该如何实现这样的功能? 最佳答案 这是可行的,但它确实需要大量填充鼠标点击和焦点事件。 简而言之,您捕获鼠标左键按下消息并将其转换
我想将特定列的背景颜色更改为对话框的颜色(灰色)。我怎样才能实现它? void CUcsOpTerminalDlg::OnCustomdrawFeatureList(NMHDR *pNMHDR, LR
我是一名优秀的程序员,十分优秀!