MFC中如何实现滚动条

MFC中如何实现滚动条,第1张

1、建立工程时,将 View 类继承自 CScrollView

2、在 OnInitialUpdate 中添加初始化时 Scroll 的相关属性值

CSize sizeTotal(0,0)

SetScrollSizes(MM_TEXT,sizeTotal)

3、打开文件 ( 图像后 ) 根据图像的大小,设置滚动属性值

ChangeScrollRange() // 自定义函数

4、在 View 类中添加成员变量。

作用是存储图像显示位置与原点的 offset

int m_ImgVScrollPos// VScroll distance

int m_ImgHScrollPos// HScroll distance

5、滚动处理

添加自定义响应 WM_VSCROLL 、 WM_HSCROLL 消息的事件函数: OnVScroll 、 OnHScroll

void CSockIIView :: OnVScroll ( UINT nSBCode , UINT nPos , CScrollBar * pScrollBar )

{

SCROLLINFO si

GetScrollInfo ( SB_VERT ,&si , SIF_ALL )

m_ImgVScrollPos = si . nPos

Invalidate ( TRUE )

CScrollView :: OnVScroll ( nSBCode , nPos , pScrollBar )

}

6、图像显示

更改 OnPaint 函数中图像显示的代码:

dc . BitBlt ( rc . left , rc . top , rc . Width (), rc . Height (), m_pMemDC , rc . left , rc . top , SRCCOPY )

为:

dc.BitBlt(rc.left,rc.top,rc.Width(),rc.Height(),m_pMemDC,(rc.left+m_ImgHScrollPos),(rc.top+m_ImgVScrollPos),SRCCOPY)

直接继承cscorllview的意思是。你创建程序之前,就是打开VC,新建单文档程序的时候,他会给你下一步下一步的选项的。注意看一下。在VIEW类的基类选择的时候,直接选择CSCROLLVIEW。那么你创建的单文档就直接自带滚动条了。

如果不想重新来一遍。也可以直接在你自己的VIEW类里面添加一个滚动条对象啊。创建的时候,应该会有一堆参数。你就设置呗。也可以达到你的需求。

http://wenku.baidu.com/view/e8822821aaea998fcc220e64.html

对话框做滚动比较麻烦,参考上面文章。

记得你问过我问题,建议你在OnInitDialog里面判断屏幕分辨率,如果分辨率小于要求,再通过SetWindowStyle、MoveWindow之类的函数代码增加滚动条。对话框的滚动是要求自己控制的,文库例子中只是一半,另一半横向滚动意思相同。

如果你这个是一个项目,给你建议:一个界面中不适合做太多控制,你可以将同类控制放在一个按钮中,通过d出新的对话框配置,也可以通过属性页的向导模式,分几步配置(就像安装程序)。一个界面放太多控件,在设计理念上,用户感受度较低。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11542608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存