[MFC] 对话框自带滚动条的使用

简介: [MFC] 对话框自带滚动条的使用

 最近在整理一个别人的MFC程序的时候,发现对话框太大了,屏幕显示不下,最后决定加一个对话框自带的滚动条,以垂直滑动条为例,具体操作如下:

1.添加垂直滑动条:右键对话框——>属性,将Vertical Scrollbar状态改为True。

                                 

2.添加响应函数:右键对话框——>添加类向导

3.在OnInitDialog()函数中添加

SCROLLINFO scrollinfo;
  GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
  scrollinfo.nPage=10; //设置滑块大小
  scrollinfo.nMax=100; //设置滚动条的最大位置0–100
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

4 .在OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)消息处理函数中添加:

void CChangeonDlg::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);
}

5 .效果展示:

 


戳戳小手帮忙点个免费的赞和关注吧,嘿嘿。
目录
相关文章
|
关系型数据库 MySQL 开发工具
windows编译poco c++库
windows编译poco c++库
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1740 0
【密码学】一文读懂XTEA加密
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
845 0
|
算法 安全 数据安全/隐私保护
C/C++学习 -- RSA算法
C/C++学习 -- RSA算法
734 0
|
6月前
|
数据采集 搜索推荐 数据可视化
基于python大数据的商品数据可视化及推荐系统
本系统基于Python、Django与ECharts,构建大数据商品可视化及推荐平台。通过爬虫获取商品数据,利用可视化技术呈现销售趋势与用户行为,结合机器学习实现个性化推荐,助力电商精准营销与用户体验提升。
|
算法 数据可视化 定位技术
基于PCL库的通过ICP匹配多幅点云方法
基于PCL库的通过ICP匹配多幅点云方法
基于PCL库的通过ICP匹配多幅点云方法
|
SQL 数据可视化 关系型数据库
SQLite3使用笔记(1)——查询
SQLite3使用笔记(1)——查询
847 0
|
Windows
【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
1299 0
【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
|
Java API 数据库
使用Spring Boot构建RESTful API
使用Spring Boot构建RESTful API
|
算法 安全 Java
详解RSA加密算法 | Java模拟实现RSA算法
详解RSA加密算法 | Java模拟实现RSA算法
622 1

热门文章

最新文章