简谈mfc滚动条实现

   给窗口加滚动条是经常遇到的事情,也不是一件困难的事情!

   一般来说,滚动条要实现两方面的功能:

   1、滚动条范围、滑块位置和长度正确的变化;

   2、窗口随滚动条的合理变化;

   为达到上述两方面的功能,需要响应下面三个消息:

   1、OnVScroll和OnHScroll:需要正确设置滑块的位置nPos(SetScrollPos),合理的移动窗口(ScrollWindow);

   2、OnSize:需要正确设置滚动条范围nMin、nMax以及每页nPage(SetScrollInfo),这里不设置nPos可以保证窗口缩放前后窗口顶端显示内容不变;

   3、OnPaint:实现窗口重绘,这一步容易造成窗口的闪烁,尽可能提高重绘的效率,为了保持当前内容不变需要调用SetWindowOrg设置窗口原点为当前滑块位置。

   为了正确设置滚动条,还需要在创建的时候设置需要显示内容的总大小(内容的在逻辑窗口的总长度)、每次点击方向箭头移动量等几个常量。

 

你可能感兴趣的:(mfc)