CListCtrl:如何保持水平滚动位置?

2024-01-11

如何保持 CListCtrl 的水平滚动条位置?我定期转储并重新填充列表控件的内容,因此无需明确记住旧位置并恢复它,滚动就会返回到左上角。

我问了一个相关问题,CListCtrl:如何保持滚动位置? https://stackoverflow.com/questions/7604267/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);

我确信您可以以相同的方式处理垂直滚动。 在您提到的帖子中,EnsureVisible 用于不必要地强制更新,因为您有更正确的方法来执行此操作。 此外,如果最后一项已经可见,则使用 E​​nsureVisible 将不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CListCtrl:如何保持水平滚动位置? 的相关文章

  • 在64位环境中加载32位进程

    我有以下几个问题 CHM 是 编译的 HTML 文件 我的 CHM 文件有一个启动 32 位应用程序的链接 CHM 文件是用 Javascript 编码的 这在 32 位操作系统环境中运行良好 但这在 64 位操作系统环境中不起作用 原因是
  • MATLAB 滚动图

    我有一个脑电图数据库 我想绘制它 数据库是一个19 1000 134的矩阵 其中 19 是通道数 在第一种方法中 我只使用一个渠道 1000 个样本大小 采样率为 500 Hz 时为 1000 个点 即 2 秒数据 134 epochs的数
  • Windows Phone 7 - ScrollViewer 值已更改

    我一直在寻找解决方案 但无法找到正确的解决方案 我的网格宽度为 960 并且有ScrollViewer在里面 现在我想知道滚动时滚动的值 水平偏移 我找到的所有解决方案都是针对 wpf silverlight 的 它对我不起作用 Edit
  • 垂直滚动,与 div/元素/锚点对齐/对齐

    我发现了一些可爱的网站 http www mini jp event campaign big point http www mini jp event campaign big point http www twenty8twelve c
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 如何从具有管理员权限的应用程序接收键盘输入到非管理员应用程序?

    我编写了一个应用程序 该应用程序具有覆盖类型的窗口 可以通过热键显示和隐藏该窗口 而另一个应用程序具有焦点 所述另一个应用程序是一个以管理员权限运行的 DirectX 游戏 我已经尝试了 3 种可能的解决方案 以便在其他应用程序中按下我的热
  • DLL 中的 XP 风格组合框

    我需要使用 C 和 WIN32 API 无 MFC 在 DLL 中创建 XP 风格的组合框 我设法在 DLL 中创建控件 不是以 XP 风格 我设法在带有清单的 exe 中创建 XP 样式组合框 但它在 DLL 中不起作用 为了让您的 DL
  • FAT-32 上的 Unicode 文件名?

    据我了解 NTFS 支持 Unicode 文件名 正如 Microsoft 声称的那样 UTF 16 但官方 MSDN 文档对于使用什么代码页在 FAT 32 上存储文件名 文件路径 非常模糊 这里说的是OEM 代码页 我假设是CP437
  • 使用createremotethread注入dll

    createremotethread如何在进程内执行dll 它使用的参数之一是 loadlibraryA 所以我得到了它在进程中执行 loadlibrary 函数的部分 然后它应该将上下文切换到内核模式 dll 是否由具有 loadlibr
  • 如何使用 COMMTIMEOUTS 等待字节可用但读取多个字节?

    我有一个 C 串行端口类 它具有用于读取操作的非阻塞和阻塞模式 对于阻塞模式 COMMTIMEOUTS cto GetCommTimeouts m hFile cto Set the new timeouts cto ReadInterva
  • 在 win32 API 应用程序中实现全球化/多语言功能

    我用 Visual C 开发了一个窗口应用程序 Win32 API 我必须在此应用程序中添加多语言功能 任何人都可以指导我如何完成这项任务 Windows 上多语言应用程序的基础是 资源 的使用 资源是附加在可执行文件末尾的块 它仅包含数据
  • UITableView 滚动缓慢

    编辑 我在英语记录上做了相同的代码 滚动速度仍然像往常一样快 并且工作正常 但是当我获取阿拉伯语数据时 滚动又变慢了 这是阿拉伯数据的问题吗 我有大约 100 条记录 我的 tableview 滚动非常慢 谁能告诉我这段代码有什么问题 为什
  • 命名管道端口号

    命名管道是否使用端口进行通信 我使用的命名管道 http msdn microsoft com en us library aa365150 28VS 85 29 aspx http msdn microsoft com en us lib
  • 如何在 Win32 中获取特定的 TIME_ZONE_INFORMATION 结构?

    Win32 GetTimeZoneInformation 函数返回控制面板中设置的系统本地时区 如何获取另一个特定时区 有没有一个电话可以做到这一点 Tony 根据this http msdn microsoft com en us lib
  • 如何调用 LogonUser() 来获取启用了 UAC 的 Windows 服务中的非限制完整令牌?

    我正在 Windows Server 2012 上运行 WindowsService 它需要模拟域管理员用户 该用户也被添加到计算机上的本地管理员组 系统上启用了 UAC 并且使用 LogonType 为 LOGON32 LOGON INT
  • MFC:从另一个线程调用 CWnd 方法安全吗?

    其实我有两个问题 打电话安全吗SendMessage来自工作线程 Do CWnd方法 比如MessageBox 调用API函数SendMessage幕后 根据我的理解 当工作线程调用时SendMessage 它将消息推送到UI线程的消息队列
  • 水平离子涡旋不工作

    在我正在制作的项目中 我使用了离子滚动两次并且工作完美 垂直模式 但现在我尝试进行水平滚动并且不起作用 滚动出现但我无法滚动任何内容 HTML 代码很简单
  • 以编程方式最小化/恢复窗口,跳过动画效果

    我需要对窗口列表执行多项操作 最小化其中一些 恢复其他 以便立即在两组或多组窗口之间切换 这样做的问题是最小化和恢复窗口时可以看到的动画 整个过程看起来很糟糕 所有这些动画都进进出出 上下移动 但是 我无法禁用这些动画 因为这是针对其他计算
  • WinApi:获取 COM 表单的控件名称

    我想用 Net 框架替换我当前的 UI 自动化工具 QTP 我需要测试 VB6 COM 应用程序 框架的基础之一是使用表单名称 到目前为止 我未能找到使用 Win API 获取这些数据的方法 该解决方案只有一个约束 即该解决方案必须依赖 N
  • MoveWindow死锁?

    我在线程 A 上有一个窗口 它在某个时刻 由于在其 wndproc 上收到消息 触发线程 B 上的操作 然后等待该操作完成 使用某种同步机制 然后线程B调用MoveWindow 在线程 A 的窗口 例如标准文本框 内移动子窗口 此时程序由于

随机推荐

  • Python lxml通过id标签查找元素

    我正在开发一个 python 程序来保存储藏室的库存 在 XML 文档中 将保留碳粉量 我希望我的 python 程序能够添加 删除和显示不同打印机和不同颜色的碳粉量 我的 XML 看起来像这样
  • 连接数组切片

    我有两个 非常大的 数组foo and bar属于同一类型 为了能够编写一些漂亮的代码 我想获得一个只读切片 result 两个数组的串联 此操作必须在 O 1 时间和空间内运行 数组访问result也必须在 O 1 内 更一般地说 如果r
  • 无法安装设计

    尝试安装 Devise 时 我收到以下消息 无法找到生成器 devise 安装 leigh leigh VirtualBox Projects dev01 bundle install Using rake 10 3 2 Using i18
  • 如何在django中将数据发送到base.html?

    我正在寻找一种方法来抽象 django 中的导航栏并将其包含在 base html 中 直接或通过模板包含 我完全迷失的部分是 如何将数据附加到上下文 以便导航栏可以从数据库获取其内容 我想查询views py 中的数据并使其可用于模板 以
  • 添加具有颜色属性的边/节点

    我使用的是networkxPython 的包 文档说我们可以做H add edge 1 2 color blue 但输出显示默认颜色 黑色 的边缘 当我做H add node 12 color green 我得到一个具有相同默认红色的新节点
  • Gradle 中的冒号运算符是什么?

    你总是看到这样的代码 project bluewhale hello 这似乎不是 Groovy 语法 它是什么 冒号不是运算符 您可以看到它在字符串内使用 它是 Gradle 用于描述子项目路径的分隔符 例如 evaluationDepen
  • Jenkins Groovy 脚本发现 null testResultAction 成功运行

    我们有一个用于詹金斯测试套件的电子邮件报告编写者 它使用 Groovy 脚本来查找正确的报告 然后制作一个 HTML 报告 详细说明测试状态 上次运行时间 链接等 hudson model Hudson instance getItems
  • 桌面浏览器是否支持 Facebook Messenger 弹出网页视图?

    我可以在 IOS Messenger 应用程序上使用 Messenger webviews 配置为文档中描述 https developers facebook com docs messenger platform send api re
  • if constexpr 未在模板化 lambda 中丢弃的错误分支

    我在模板 lambda 中遇到 if constexpr 问题 为了便于讨论 让我们忽略我是如何到达那里的 但我有一个 struct foo 它以某种方式定义 结果如下 template
  • Django:将数据从一个数据库复制到另一个数据库

    我有两个 sqlite db 文件 我想将数据库文件表中一列的内容复制到另一列 例如 我在名为 new db 的数据库文件中有模型信息 class Information models Model info id models AutoFi
  • 显示 Volley 文件下载的进度值

    我需要以百分比显示文件下载进度 目前我正在使用Volley图书馆 我用InputStreamVolleyRequest发出下载请求的类BufferedOutputStream读 写文件 如何以最有效的方式显示进度更新 我正在将进度条与 Ht
  • 为什么此代码不能正确增加计数器?

    在下面的代码中 为什么它不每次将整数加一 例如 假设我有1 OF 5当我提交表格时 提交后应该是2 OF 5 但相反 它显示5 OF 5 即使我将最大值从 5 更改为 3 也会发生这种情况 它开始于1 OF 3并立即跳转到3 OF 3 这是
  • 使用UTF-8编码的VBA Excel宏写入文件[重复]

    这个问题在这里已经有答案了 我正在 Excel 中创建一个宏 用于处理电子表格并将内容 文本 写入文件 我需要将此文件编码为 UTF 8 我尝试使用 OpenTextFile TristateTrue 和 StrConv vbUnicode
  • 如何避免Angularjs中的大量依赖

    我有一个 Angular 应用程序 它运行良好 但随着我的应用程序变得越来越大 我担心必须在每个控制器中注入大量依赖项 例如 app controller viewapps scope Appfactory Menu timeout fil
  • 单独窗口中的 Android Studio 模拟器

    我的 Android Studio 遇到问题 这是我第一次安装Android Studio 问题是 当我安装任何设备时 它会在设备或模拟器周围出现灰色背景 我不知道它是否与最新的 Android Studio 版本有关 因为我已经更新了它
  • C++ 中的头文件和 Java 中的抽象类/接口实现都是相同的想法,这是否正确?

    我对 C 有点熟悉 我知道对于几乎每个头文件 我都必须创建源文件来配合它 现在我正在研究java接口和实现 它看起来是一样的 首先 您只需在一个类中命名变量和方法 然后在其他类中定义它们 C 和Java中的这些东西是不是基本相同或者相似 J
  • 本地站点的 HTML 图像

    我是 HTML 新手 有一个关于图像的简单问题 下面是我正在使用的一个简单的 html 文件 我想将图像放入其中 该图像存储在我网站的主目录中 该网站是本地的 在我的 MacBook 上 h1 My First Heading h1 p M
  • 使用字符串日期对列表进行排序 [Kotlin]

    我有数组列表typeBeanArrayList其中元素有点像日期 例如 30 03 2012 28 03 2013 31 03 2012 2 04 2012 我怎样才能排序降序 Code typeBeanArrayList database
  • 如何通过保持“templateurl”不变来编译 Angular 2 Webpack

    Webpack 通过在中生成 js 来编译 typescript 文件dist文件夹 我发现 webpack 正在将所有 templateurl 更改为 template 如下所示 我的打字稿组件 Component selector ap
  • CListCtrl:如何保持水平滚动位置?

    如何保持 CListCtrl 的水平滚动条位置 我定期转储并重新填充列表控件的内容 因此无需明确记住旧位置并恢复它 滚动就会返回到左上角 我问了一个相关问题 CListCtrl 如何保持滚动位置 https stackoverflow co