MFC MFC对话框滚动条的使用
2016-10-30 20:22
344 查看
对话框的(上下/左右)滚动事件,比如,把一个比较大的对话框放入tab控件的某一页时,就需要添加滚动条。在使用了java和qt等图形界面化的集成开发环境之后,再使用MFC,就会发现,想要让一个对话框滚动是多么麻烦的一件事情。下面我记录一下自己在使用MFC对话框自己带的垂直滚动条的过程。
(1)设置对话框的vertical scrollbar属性为true;
(2)初始化滚动条,如下:
在OnInitDialog函数中调用该初始化函数即可。
(3)重新实现OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)消息处理函数。
(1)设置对话框的vertical scrollbar属性为true;
(2)初始化滚动条,如下:
void Dlg_WholeTest_Test::initScrollbar() { SCROLLINFO scrollinfo; GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); scrollinfo.nPage=10; //设置滑块大小 scrollinfo.nMax=75; //设置滚动条的最大位置0--75 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); }
在OnInitDialog函数中调用该初始化函数即可。
(3)重新实现OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)消息处理函数。
void MyDialog::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) //对话框的滚动效果 { // TODO: 在此添加消息处理程序代码和/或调用默认值 SCROLLINFO scrollinfo; GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); int unit=3; switch (nSBCode) { case SB_LINEUP: //Scroll one line up scrollinfo.nPos -= 1; if (scrollinfo.nPos<scrollinfo.nMin) { scrollinfo.nPos = scrollinfo.nMin; break; } SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); ScrollWindow(0,unit); break; case SB_LINEDOWN: //Scroll one line down scrollinfo.nPos += 1; if (scrollinfo.nPos+scrollinfo.nPage>scrollinfo.nMax) //此处一定要注意加上滑块的长度,再作判断 { scrollinfo.nPos = scrollinfo.nMax; break; } SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); ScrollWindow(0,-unit); break; case SB_PAGEUP: //Scroll one page up. scrollinfo.nPos -= 5; if (scrollinfo.nPos<=scrollinfo.nMin) { scrollinfo.nPos = scrollinfo.nMin; break; } SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); ScrollWindow(0,unit*5); break; case SB_PAGEDOWN: //Scroll one page down scrollinfo.nPos += 5; if (scrollinfo.nPos+scrollinfo.nPage>=scrollinfo.nMax) //此处一定要注意加上滑块的长度,再作判断 { scrollinfo.nPos = scrollinfo.nMax; break; } SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); ScrollWindow(0,-unit*5); break; case SB_ENDSCROLL: //End scroll break; case SB_THUMBPOSITION: //Scroll to the absolute position. The current position is provided in nPos break; case SB_THUMBTRACK: //Drag scroll box to specified position. The current position is provided in nPos ScrollWindow(0,(scrollinfo.nPos-nPos)*unit); scrollinfo.nPos = nPos; SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); break; } CDialog::OnVScroll(nSBCode, nPos, pScrollBar); }
相关文章推荐
- MFC 对话框上RGB图像缩放,左键放大,右键缩小+滚动条使用
- MFC MFC对话框滚动条的使用
- MFC---之对话框滚动条的使用
- MFC对话框滚动条的使用
- MFC对话框下的菜单使用setCheck
- 使用MFC在一对话框中嵌入另一对话框
- MFC颜色对话框的使用
- MFC中对话框的使用
- MFC中常用数据类型转换及文件和对话框和几个控件的使用
- 回调函数中使用MFC类的成员或对话框控件的简单方法。
- 在MFC对话框中使用ON_UPDATE_COMMAND_UI更新菜单
- MFC 对话框的使用
- 使用 Visual C++ .NET 和 MFC 关闭 Office 应用程序显示的对话框
- MFC对话框CDialog中使用CStatusBar状态栏
- MFC 下对话框程序使用消息
- MFC颜色对话框的使用
- 在MFC “共享MFC 规则DLL”中(创建MFC DLL中选第一个),使用MFC对话框注意问题
- MFC对话框界面中使用CCmdUI对象更新菜单状态
- 在MFC对话框中使用加速键
- MFC 对话框设计问题(控件的使用)