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);

 

原文地址:https://www.cnblogs.com/sdk123/p/6829711.html