MFC入门 002 滚动条Scorllbar 数字控制框 Spin 进度条 Progress

#滚动条ScorllbarDemo

 

 

设置 ID;IDC_SCROLLBAR

 

复制代码
    //OnInitDialog初始化代码

    // 滚动条初始化
    SCROLLINFO scrollinfo = { 0 };
    scrollinfo.cbSize = sizeof(SCROLLINFO);
    scrollinfo.fMask = SIF_RANGE | SIF_PAGE;
    scrollinfo.nMax = 100;
    scrollinfo.nMin = 0;
    scrollinfo.nPage = 10;
    m_scroll.SetScrollInfo(&scrollinfo);
复制代码

 

 

复制代码
 1 void CScorllbarDemoDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
 2                             //nSBCode 判断消息  //鼠标拖动地方    //控制当前滚动条
 3                             //使用前必须要用 SCROLLINFO 对滚动条信息初始化
 4                             // 滚动条初始化
 5                     /*    SCROLLINFO scrollinfo = { 0 };
 6                         scrollinfo.cbSize = sizeof(SCROLLINFO);
 7                         scrollinfo.fMask = SIF_RANGE | SIF_PAGE;
 8                         scrollinfo.nMax = 100;
 9                         scrollinfo.nMin = 0;
10                         scrollinfo.nPage = 10;
11                         m_scroll.SetScrollInfo(&scrollinfo);
12                     */
13 {
14     // TODO: 在此添加消息处理程序代码和/或调用默认值
15     //MessageBox(L"滚动条被改变!");
16     SCROLLINFO scrollinfo = { 0 };
17     scrollinfo.cbSize = sizeof(SCROLLBARINFO);
18     scrollinfo.fMask = SIF_ALL;
19     pScrollBar->GetScrollInfo(&scrollinfo);
20     int nNewPos = pScrollBar->GetScrollPos();
21     //POS 位置
22     switch (nSBCode)
23     {
24 
25     case SB_THUMBTRACK:        //用户拖动滚动条
26             nNewPos = nPos;
27             break;
28     case SB_LINELEFT:        //左边的按钮
29         nNewPos -= 1;
30             break;
31     case SB_LINERIGHT:        //右边的按钮
32         nNewPos += 1;
33             break;
34     case SB_PAGELEFT:        //按页拖动左
35         nNewPos -= scrollinfo.nPage;
36             break;
37     case SB_PAGERIGHT:        //按页拖动右
38         nNewPos += scrollinfo.nPage;
39             break;
40         default:
41             break;
42     }
43     if (nNewPos > scrollinfo.nMax)        //获取默认位置是否大于 最大值
44         nNewPos = scrollinfo.nMax;
45     if (nNewPos < scrollinfo.nMin)        //获取默认位置是否小于 最小值
46         nNewPos = scrollinfo.nMin;
47     scrollinfo.nPos = nNewPos;
48     pScrollBar->SetScrollInfo(&scrollinfo);
49 
50     CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
51 }
复制代码

 

 

 #数字控制框 SpinDemo 

 

 

  这个控件有一个属性,就是没有别人活不下去的属性

  先拖拽一个 编辑框然后和这个控件 组合使用

 

    设置ID IDC_SPIN_DEC 

    Auto Buddy 为 True

    Set Buddy Integ  为 True

    Alignment 设置对其方式

 

    设置编辑框 的 属性 Read Only True 编辑框只读属性

 

 

 

 #进度条 ProgressDemo

拖拽控件

  Progress 进度条控件

    设置ID为 IDC_PROGRESS

  Button 按钮控件

    设置ID为 IDC_BUT_BEGIN

    添加变量 m_porgress

 

复制代码
 1         //在OnInitDialog 初始化 进度条的范围
 2             m_porgress.SetRange32(0,100);
 3 
 4 void CProgressDemoDlg::OnBnClickedButBegin()
 5 {
 6     // TODO: 在此添加控件通知处理程序代码
 7     /*
 8     int nMin, nMax, nPos;
 9     m_porgress.GetRange(nMin, nMax);
10     for (; nMin < nMax; ++nMin)
11     {
12         m_porgress.SetPos(nMin);
13         Sleep(100);
14     }
15     */
16     SetTimer(1, 100, nullptr);
17     GetDlgItem(IDC_BUT_BEGIN)->EnableWindow(FALSE);        //把按钮设置不可点状态
18 }
19 
20 
21 void CProgressDemoDlg::OnTimer(UINT_PTR nIDEvent)
22 {
23     // TODO: 在此添加消息处理程序代码和/或调用默认值
24     int nMin, nMax, nPos;
25     m_porgress.GetRange(nMin, nMax);
26     nPos = m_porgress.GetPos();
27     nPos++;
28     if (nPos > nMax)
29     {
30         KillTimer(1);
31         nPos = 0;
32         GetDlgItem(IDC_BUT_BEGIN)->EnableWindow(TRUE);    //把按钮设置成可点状态
33     }
34     m_porgress.SetPos(nPos);
35     CDialogEx::OnTimer(nIDEvent);
复制代码

 

 

 

 

 

posted @   ☆﹎夜﹎☆  阅读(768)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· 赶AI大潮:在VSCode中使用DeepSeek及近百种模型的极简方法
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
点击右上角即可分享
微信分享提示