关于拖动滚动条编辑框数据重影的问题

时间:2023-01-26 22:15:13
    我用VC++做了一个编辑框,并设置有垂直滚动条。当编辑框中的数据太多时,此时滚动条可用。我在拖动滚动条查看编辑框数据时,发现滚动才显示的数据有重影。
    比如说有三行数据,编辑框的大小只能显示2行,我在拖动滚动条时,第三行或第一行的数据有重影,比如是0,他会显示00,当然两个0之间的距离没有这么大,就是紧挨着,像是有个影子似地。
    我一开始以为是电脑刷新的问题,后来发现在3~4台电脑上都有这个问题。
    麻烦各位解答。谢谢了。

16 个解决方案

#1


该回复于2010-12-08 09:34:26被版主删除

#2


你自己写的编辑框还是用的edit control?

#3


引用 2 楼 bluewanderer 的回复:
你自己写的编辑框还是用的edit control?

是VC++自带的,Edit Box控件

#4


引用 1 楼 q191201771 的回复:
友情帮顶啊

谢谢啦

#5


没有人知道吗?我也觉得这个问题一般人还真遇不到,感觉这可能和我的整个程序有问题。如果大家有什么想法,不管有没有依据,都可以给我提提,给我点灵感,因为我现在真的想不到哪儿有问题了。

#6


滚动条是edit control自己的还是你加的?

#7


引用 6 楼 bluewanderer 的回复:
滚动条是edit control自己的还是你加的?

edit control自己的

#8


   我定义了一个ontimer函数,想刷新一下编辑框信息,去除重影的现象。但是,在拉动滚动条的时候,它又会自动显示开始的位置。
    所以,我现象想怎样获取滚动条的位置,然后刷新后又显示滚动到的位置。不知道谁有办法获取edit control自带的滚动条的位置。
    谢谢指点。

#9


是不是拉动滚动条的响应里面没有重绘窗口?

#10


[Code=C/C++]BOOL GetScrolllnfo(HWND hWnd,int fnBar,LPSCROLLINFO lpsi);[Code]
可以查询滚动条的全部信息, 第二个参数用 SB_VERT / SB_HORZ 指定获取垂直或水平滚动条的信息

#11


引用 9 楼 arcticanimal 的回复:
是不是拉动滚动条的响应里面没有重绘窗口?

对对对,我就是想在拉动滚动条的时候重绘一下窗口,但是我不知道该用哪个函数?
请指点,谢谢~看到希望了

#12


::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

#13


引用 12 楼 arcticanimal 的回复:
C/C++ code
::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

但是,我该把这个语句放到哪个函数下呢?拉动滚动条的函数吗?但是我不知道拉动滚动条的函数是哪一个啊。请指点。

#14


引用 13 楼 babihehe 的回复:
引用 12 楼 arcticanimal 的回复:
C/C++ code
::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

但是,我该把这个语句放到哪个函数下呢?拉动滚动条的函数吗?但是我不知道拉动滚动条的函数是哪一个啊。请指点。


WM_HSCROLL/WM_VSCROLL 这两个消息的响应函数里面

#15


引用 14 楼 arcticanimal 的回复:
引用 13 楼 babihehe 的回复:

引用 12 楼 arcticanimal 的回复:
C/C++ code
::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

但是,我该把这个语句放到哪个函数下呢?拉动滚动条的函数吗?但是我不知道拉动滚动条的函数是哪一个啊。请指点。


WM_HSCROLL/WM_VSCRO……

非常感谢,我试试哈~

#16


引用 14 楼 arcticanimal 的回复:
引用 13 楼 babihehe 的回复:

引用 12 楼 arcticanimal 的回复:
C/C++ code
::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

但是,我该把这个语句放到哪个函数下呢?拉动滚动条的函数吗?但是我不知道拉动滚动条的函数是哪一个啊。请指点。


WM_HSCROLL/WM_VSCRO……


我拖动滚动条的时候还是有重影,但是滚动鼠标导致滚动条变化时,就没有重影了。
不过已经很好了~非常感谢~

#1


该回复于2010-12-08 09:34:26被版主删除

#2


你自己写的编辑框还是用的edit control?

#3


引用 2 楼 bluewanderer 的回复:
你自己写的编辑框还是用的edit control?

是VC++自带的,Edit Box控件

#4


引用 1 楼 q191201771 的回复:
友情帮顶啊

谢谢啦

#5


没有人知道吗?我也觉得这个问题一般人还真遇不到,感觉这可能和我的整个程序有问题。如果大家有什么想法,不管有没有依据,都可以给我提提,给我点灵感,因为我现在真的想不到哪儿有问题了。

#6


滚动条是edit control自己的还是你加的?

#7


引用 6 楼 bluewanderer 的回复:
滚动条是edit control自己的还是你加的?

edit control自己的

#8


   我定义了一个ontimer函数,想刷新一下编辑框信息,去除重影的现象。但是,在拉动滚动条的时候,它又会自动显示开始的位置。
    所以,我现象想怎样获取滚动条的位置,然后刷新后又显示滚动到的位置。不知道谁有办法获取edit control自带的滚动条的位置。
    谢谢指点。

#9


是不是拉动滚动条的响应里面没有重绘窗口?

#10


[Code=C/C++]BOOL GetScrolllnfo(HWND hWnd,int fnBar,LPSCROLLINFO lpsi);[Code]
可以查询滚动条的全部信息, 第二个参数用 SB_VERT / SB_HORZ 指定获取垂直或水平滚动条的信息

#11


引用 9 楼 arcticanimal 的回复:
是不是拉动滚动条的响应里面没有重绘窗口?

对对对,我就是想在拉动滚动条的时候重绘一下窗口,但是我不知道该用哪个函数?
请指点,谢谢~看到希望了

#12


::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

#13


引用 12 楼 arcticanimal 的回复:
C/C++ code
::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

但是,我该把这个语句放到哪个函数下呢?拉动滚动条的函数吗?但是我不知道拉动滚动条的函数是哪一个啊。请指点。

#14


引用 13 楼 babihehe 的回复:
引用 12 楼 arcticanimal 的回复:
C/C++ code
::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

但是,我该把这个语句放到哪个函数下呢?拉动滚动条的函数吗?但是我不知道拉动滚动条的函数是哪一个啊。请指点。


WM_HSCROLL/WM_VSCROLL 这两个消息的响应函数里面

#15


引用 14 楼 arcticanimal 的回复:
引用 13 楼 babihehe 的回复:

引用 12 楼 arcticanimal 的回复:
C/C++ code
::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

但是,我该把这个语句放到哪个函数下呢?拉动滚动条的函数吗?但是我不知道拉动滚动条的函数是哪一个啊。请指点。


WM_HSCROLL/WM_VSCRO……

非常感谢,我试试哈~

#16


引用 14 楼 arcticanimal 的回复:
引用 13 楼 babihehe 的回复:

引用 12 楼 arcticanimal 的回复:
C/C++ code
::InvalidateRect(hWnd, NULL, TRUE);

标记整个窗口内容失效,自动重绘

但是,我该把这个语句放到哪个函数下呢?拉动滚动条的函数吗?但是我不知道拉动滚动条的函数是哪一个啊。请指点。


WM_HSCROLL/WM_VSCRO……


我拖动滚动条的时候还是有重影,但是滚动鼠标导致滚动条变化时,就没有重影了。
不过已经很好了~非常感谢~