zoukankan      html  css  js  c++  java
  • 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);

     

  • 相关阅读:
    C语言文件操作函数大全
    iOS
    HDU 5042 GCD pair 预处理+二分 分段
    swoole新手教程01-环境搭建及扩展安装
    Cocos2d-X中的Slider控件
    CSS之BFC
    代理server的概要知识
    C#比較对象的相等性
    Effective C++ 35,36,37
    oled屏幕
  • 原文地址:https://www.cnblogs.com/sdk123/p/6829711.html
Copyright © 2011-2022 走看看