W wlmmlw Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-04 #1 一个拥有滚动条的控件,在改变大小的时候,滚动条(操作系统的)也能更正到正确的位置和大小,请问操作系统是怎么得知要更正滚动条?如果由我们实现这项功能,应该怎么做?
B barton Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-04 #2 带滚动条的窗口一般有两个SCROLLINFO结构保存滚动条信息,当大小改变的时候,调用 SetScrollInfo函数更新这个结构。其实滚动条也是独立的窗口,当它与另一个窗口捆绑的 时候,它的刷新就依赖所捆绑的窗口了。 你到底想实现什么?如果你要实现你是不是也需要调用这个API函数?
带滚动条的窗口一般有两个SCROLLINFO结构保存滚动条信息,当大小改变的时候,调用 SetScrollInfo函数更新这个结构。其实滚动条也是独立的窗口,当它与另一个窗口捆绑的 时候,它的刷新就依赖所捆绑的窗口了。 你到底想实现什么?如果你要实现你是不是也需要调用这个API函数?
S songmk Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-04 #3 SendMessage(Memo1.Handle, EM_SCROLLCARET, 0, 0); 不大明白你的意思
W wlmmlw Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-04 #4 是这样的,当滚动条所在的窗口接收WMSIZE时候我们能做一些更正操作. 在这些操作里我们可以重画滚动条. 我现在在写一个类,就是自定义滚动条,我的想法是我不需要由滚动条所在的窗口来调用我的重画过程,我要使用滚动条能够知道自己需要重新调整了.请赐教!
是这样的,当滚动条所在的窗口接收WMSIZE时候我们能做一些更正操作. 在这些操作里我们可以重画滚动条. 我现在在写一个类,就是自定义滚动条,我的想法是我不需要由滚动条所在的窗口来调用我的重画过程,我要使用滚动条能够知道自己需要重新调整了.请赐教!
B barton Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-04 #5 当ScrollBar单独作为一个窗口的时候,它无法获得自己需要更新的消息,除非你拖动滚动 条中的按钮。这时候的ScrollBar的功能类似于CommCtrl中的TrackBar。 更多的时候,滚动条是隐藏在另一个窗口后的,甚至连滚动条的窗口句柄也没有公开。更新 滚动条的消息全部由操作系统调用。如果一个窗口的Style中带WS_VSCROLL则会自动带上垂 直滚动条;如果Style中带有WS_HSCROLL则会自动带上水平滚动条,这时候根本不可以直接 操作滚动条,而是通过滚动条所在的窗口进行操作。即使如此,你仍然需要自己来维护滚 动条所需要的ScrollInfo结构。
当ScrollBar单独作为一个窗口的时候,它无法获得自己需要更新的消息,除非你拖动滚动 条中的按钮。这时候的ScrollBar的功能类似于CommCtrl中的TrackBar。 更多的时候,滚动条是隐藏在另一个窗口后的,甚至连滚动条的窗口句柄也没有公开。更新 滚动条的消息全部由操作系统调用。如果一个窗口的Style中带WS_VSCROLL则会自动带上垂 直滚动条;如果Style中带有WS_HSCROLL则会自动带上水平滚动条,这时候根本不可以直接 操作滚动条,而是通过滚动条所在的窗口进行操作。即使如此,你仍然需要自己来维护滚 动条所需要的ScrollInfo结构。
W wlmmlw Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-04 #7 如果Disable一个滚动条? 说话吧,不够我加分.
W wuwo Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-04 #8 不要在原窗口的基础上自画滚动条,这样刷新很慢,我就试过,除非使用Detours.
W wlmmlw Unregistered / Unconfirmed GUEST, unregistred user! 2003-07-05 #9 用CreateSubClass override GetClientRect应该可以吧.
F funkey Unregistered / Unconfirmed GUEST, unregistred user! 2003-11-21 #11 我重画过memo的ClientRect,但是不包含滚动条部分,可以试试用GetDC,但是滚动条部分怎么重画就不知道了
W wlmmlw Unregistered / Unconfirmed GUEST, unregistred user! 2003-11-22 #12 我试过了,两者都可以重画,只是一直没时间写那个控件.