richedit设置滚动条位置并更新内容

想做txt阅读器时发现richedit的scrollbar位置(为了下次阅读方便,下次读取直接获取上次阅读位置)不好处理,使用GetScrollPos、SetScrollPos能够获取设置scorllbar位置的值,但是!SetScorllPos调用后只更新了scorllbar的位置richedit的内容没得到更新,google一下没有个现成的解决,只得msdn。

WM_VSCROLL重点标记一下:

SB_THUMBPOSITION

The user has dragged the scroll box (thumb) and released the mouse button. The HIWORD indicates
the position of the scroll box at the end of the drag operation.

However, because the SetScrollInfoSetScrollPosSetScrollRangeGetScrollInfo,GetScrollPos,
and GetScrollRange functions
support 32-bit scroll bar position data, there is a way to circumvent the 16-bit barrier of the WM_HSCROLL and WM_VSCROLL messages.
SeeGetScrollInfo for
a description of the technique.

GetScrollInfo重点标记一下:

SIF_TRACKPOS

Copies the current scroll box tracking position to the nTrackPosmember of the SCROLLINFO structure
pointed to by lpsi.

Remarks

The GetScrollInfo function enables applications to use 32-bit scroll positions. Although the messages that indicate scroll bar position, WM_HSCROLL and WM_VSCROLL,
provide only 16 bits of position data, the functions SetScrollInfo and GetScrollInfo provide
32 bits of scroll bar position data. Thus, an application can call GetScrollInfo while processing either theWM_HSCROLL or WM_VSCROLL messages to obtain 32-bit scroll bar position data.

To get the 32-bit position of the scroll box (thumb) during a SB_THUMBTRACK request code in a WM_HSCROLL or WM_VSCROLL message,
call GetScrollInfo with the SIF_TRACKPOS value in the fMask member of the SCROLLINFO structure.
The function returns the tracking position of the scroll box in the nTrackPos member of the SCROLLINFO structure. This allows you to get the position of the scroll box as the user moves it. The following sample code illustrates
the technique.

SCROLLINFO si;
case WM_HSCROLL:
    switch(LOWORD(wparam)) {
        case SB_THUMBTRACK:
          // Initialize SCROLLINFO structure

            ZeroMemory(&si, sizeof(si));
            si.cbSize = sizeof(si);
            si.fMask = SIF_TRACKPOS;

          // Call GetScrollInfo to get current tracking
          //    position in si.nTrackPos

            if (!GetScrollInfo(hwnd, SB_HORZ, &si) )
                return 1; // GetScrollInfo failed
            break;
        .
        .
        .
    }

实现本文功能:

//保存scrollbar位置
  SCROLLINFO Info={0};
  Info.cbSize=sizeof Info;
  Info.fMask=SIF_TRACKPOS;
  GetScrollInfo(RichEdit1->Handle,SB_VERT,&Info);
  std::auto_ptr<TIniFile> ptrIni(new TIniFile(ExtractFilePath(Application->ExeName)+"Config"));
  ptrIni->WriteInteger("Reader","ScorllPos",Info.nTrackPos);

//设置scrollbar位置
    std::auto_ptr<TIniFile> ptrIni(new TIniFile(ExtractFilePath(Application->ExeName)+"Config"));
    int pos=ptrIni->ReadInteger("Reader","ScorllPos",0);
    SendMessage(RichEdit1->Handle,WM_VSCROLL,MAKEWPARAM(SB_THUMBPOSITION,pos),0);
时间: 2024-11-09 07:31:51

richedit设置滚动条位置并更新内容的相关文章

richedit设置滚动条的位置和更新内容

需要txt发现读者richedit的scrollbar位置(为了便于下一次读,直接访问与上次读取下一个读取位置)不值得治疗,采用GetScrollPos.SetScrollPos你可以设置scorllbar位置值.可是! SetScorllPos调用后仅仅更新了scorllbar的位置richedit的内容没得到更新,google一下没有个现成的解决.仅仅得msdn. WM_VSCROLL重点标记一下: SB_THUMBPOSITION The user has dragged the scro

datawindow.net数据窗口卡片设置滚动条位置

int pos = Convert.ToInt32(dw1.Describe(colname + ".y")); pos = pos - 40; dw1.Modify("DataWindow.VerticalScrollPosition='"+pos.ToString()+"'");

2014-07-25 设置Winform窗体滚动条位置

昨天那个小工具还差最后一步,就是那个图文并茂窗体. 拖几个GroupBox.Label.PictureBox控件,很快就做完了. 因为截图比较大,所以加了滚动条(设置 AutoScroll 属性为 True ). 但是发现一个问题,弹出这个窗体的时候,滚动条总是在最下边囧. 老程序员看了说:“这个没事儿,不用管”. 不过我看着总是感觉不爽,客户体验太差!而且最关键的是,我感觉这个应该很容易解决. 所以,我决定还是再改一下. 于是,我自信而又轻快地敲击键盘,写下了自以为可以轻松搞定这个问题的代码:

Swing 设置JScrollPanel 滚动条位置

js.doLayout(); JScrollBar jsVB = js.getVerticalScrollBar(); if (jsVB != null) { jsVB.setValue(jsVB.getMaximum() / 2); } JScrollBar jsHB = js.getHorizontalScrollBar(); if (null != jsHB) { jsHB.setValue(jsHB.getMaximum() / 6); } Swing 设置JScrollPanel 滚动

WebStorage记录滚动条位置

因关注公众号<HTML5学堂>看到这篇文章 "利用本地存储,记录滚动条的位置" ,便好奇敲来试试,然后又看了一些关于WebStorage的资料 附上这篇文章的地址 https://mp.weixin.qq.com/s/z34GRUZvDU2hCbH6Kc_ZDA 与大家共勉. 在网上搜了一些记录滚动条位置的文章,大多是用cookie来记录,下边我就自己看到的资料与大家分析cookie与webstorage的区别.   优点 缺点 应用场景 Cookie 简单易用 安全性差,

Win10 Mobile/PC稳定预览版14393.221(222)更新内容大全

win10之家 10月1日消息,微软此前推送了Win10 Mobile一周年更新预览版14393.221,而今天推送了Win10 PC年度更新14393.222,虽然版本号有差异,但微软将两次Windows10累积更新内容合并到一起公布. 下面IT之家为大家整理的Win10 Build 14393.222 (PC) / 14393.221 (Mobile)更新内容: 提升相关稳定性,包括Windows更新代理.驱动分享.VPN虚拟网络.集群.HTTP下载.IE11.Hyper-V虚拟机.多媒体播

scroll、scrollBy和 scrollTo三种方法定位滚动条位置

在默认情况下,页面加载完后默认滚动在最顶端,有些时候我们需要在页面打开后,定位滚动条的位置,比如,横向和纵向滚动条居中,实现页面滚动的方法有三种:scroll.scrollBy和 scrollTo,三个方法都带两个参数:x(X轴上的偏移量)和y(Y轴上的偏移量).因此我们只需修改x,y的偏移量来设置滚动条的位置.另外,页面的滚动高度必须在网页加载完成后才能获取到,所以触发事件用onload. 方法一:用scroll方法实现滚动条位于最底端. <body > 方法二:用scrollBy方法实现滚

谷歌下设置滚动条的css样式

.oLi-lists-scroll::-webkit-scrollbar { width:5px;  padding:1px; background:url(../images/repeat-bar.png) repeat-y;} /* Track */ .oLi-lists-scroll::-webkit-scrollbar-track {height:4px;} /* Handle */ .oLi-lists-scroll::-webkit-scrollbar-thumb { backgro

转载自前端开发:CSS设置滚动条样式

浏览器默认的滚动条样子太过屌丝了,得自己动手整整.记得IE浏览器有几个设置滚条的样式,不过比较鸡肋,只能设置颜色之类的,而且webkit下面也不支持.无意间看到网易邮箱的滚动条样子很好看,一开始以为是用div模拟的,结果一看,吼吼,正合我意,利用的CSS来设置的,而且是webkit浏览器的. 得好好研究这几个属性下,才能自己动手改造. webkit浏览器css设置滚动条 主要有下面7个属性 ::-webkit-scrollbar 滚动条整体部分,可以设置宽度啥的 ::-webkit-scroll