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:如何保持水平滚动位置? 的相关文章

  • .NET 或 Windows 同步原语性能规范

    我目前正在写一篇科学文章 我需要非常准确地引用 有人可以向我指出 MSDN MSDN 文章 一些已发表的文章来源或一本书 我可以在其中找到 Windows 或 NET 同步原语的性能比较 我知道这些是按性能降序排列的 互锁 API 关键部分
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 如何在 Windows XP 上放置通知(托盘)图标上下文菜单?

    我正在使用 C 和 Win32 我希望上下文菜单和设置对话框显示在托盘图标附近 我想我需要图标的坐标才能做到这一点 Shell NotifyIconGetRect 在 Windows 7 之前不可用 WM CONTEXTMENU 从 Win
  • C++中最大化窗口时的问题

    我的程序需要任意最大化当前桌面上的任何窗口 我通过调用来实现这一点ShowWindow hWnd SW MAXIMIZE 其中 hWnd 是HWND我想要最大化的窗口 当该行代码执行时 相关窗口 此处为记事本 如下所示 一切看起来都很好 除
  • win32 Python - pythoncom 错误 - ImportError: 没有名为 pywintypes 的模块

    我正在尝试导入 pythoncom 但它给了我这个错误 Traceback 最近一次调用最后 文件 F Documents and Settings Emery Desktop Python 27 Try 第 2 行 位于 导入python
  • MFC CImage alpha 混合出错

    我必须在图片控件上呈现由两个 PNG 文件组成的图像 其中顶部图像在某些位置具有透明像素 结果应该是plotter png 与 bar png 顶部重叠显示为 注意条上奇怪的白色轮廓 但应该是 我为它编写的代码很简单 CImage imag
  • 发送和接收 Windows 消息

    Windows 消息似乎是通知 Windows 操作系统上的应用程序的好方法 它实际上运作良好 但我想到了几个问题 How to指定结构化数据lparamSendMessage 例程 就像许多消息代码一样 我的意思是 参数当然是一个指针 但
  • Windows BlockInput 功能不起作用

    Why BlockInput不工作 include
  • 在64位环境中加载32位进程

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

    谁能解释一下背后的想法IServiceProvider and QueryService 我不明白服务是什么以及它与其他类型的对象或接口有何不同 我看到的解释很少 主要是一些评论here https learn microsoft com
  • 在我的 div 标签中 有很多行非常长的文本 并且 div 元素当前是可滚动的 我想做的是找到特定字符串的第一次出现并自动滚动到包含该字符串的行 没有换行符或任何类型的字符串分隔符可以用来轻松近似滚动位置 我想我可以做这样的事情 var m
  • 如何从具有管理员权限的应用程序接收键盘输入到非管理员应用程序?

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

    基本上 我试图找出用户当前安装的 ArcGIS 版本 我查看了注册表 但找不到与版本字符串相关的任何内容 但我知道它存储在 exe 中 我已经做了相当多的谷歌搜索 但找不到任何真正值得的东西 我尝试使用 GetFileVersionInfo
  • FAT-32 上的 Unicode 文件名?

    据我了解 NTFS 支持 Unicode 文件名 正如 Microsoft 声称的那样 UTF 16 但官方 MSDN 文档对于使用什么代码页在 FAT 32 上存储文件名 文件路径 非常模糊 这里说的是OEM 代码页 我假设是CP437
  • 检测适配器中的滚动方向(向上/向下)

    我正在尝试在我的项目中模仿 Google Plus 应用程序 因为它现在似乎是参考 滚动时的列表视图效果非常好 我想做类似的事情 我从 LayoutAnimationController 开始http android er blogspot
  • 将 CreateThread 与 lambda 结合使用

    只是试验 但我想知道是否可以使该代码工作 如编译 void main int number 5 DWORD dontThreadOnMe PVOID PVOID data int value int data cout lt lt valu
  • Angular 2 RC 5 Internet Explorer 10 滚动性能不佳

    我已经使用 Angular 2 构建了一个产品目录应用程序 现在我正在调试 IE 的缺陷 所以 这就是发生的事情 我有一个CatalogComponent它包含一些按类别显示产品的子组件 我的页面中有 50 60 个缩略图 因此页面负载并不
  • 如何获取与Windows主题相关的图标?

    如何获取Windows中某个控件的图标 更具体地说 我想从 ListView 标题中获取排序箭头图标 我尝试使用以下方法来获取它 HRESULT GetSortArrowBmp HWND hwnd HEADERSORTARROWSTATES
  • Visual C++ MFC 中窗口启动时的事件顺序

    假设我有一个从 CWnd 派生的类 它具有事件处理函数OnPaint OnCreate and OnSize 如您所知 所有这些都是在窗口启动时发生的 但我想看看它们之间的顺序是什么 例如 当我在其中一个中设置断点时 在结束函数后 控制不会
  • 恢复 webview 滚动位置?

    我想要拯救国家 of my webView以其页面滚动位置当用户离开应用程序时并在用户再次打开应用程序时恢复它们 这样 用户可以继续阅读恢复的网页视图内容 向下滚动到恢复的位置 以下是我正在使用的方法 Override protected

随机推荐

  • 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