zoukankan      html  css  js  c++  java
  • Win32 滚动条控件

    1.创建控件

    HWND hScrollBar = ::CreateWindow(

            WC_SCROLLBAR,                           //控件类名

            NULL,                                   //窗口标题文本

            WS_VISIBLE | WS_CHILD | SBS_TOPALIGN,   //控件风格样式

            10, 100, 200, 40,                       //控件显示位置坐标

            m_hWnd,                                 //父窗口句柄

            (HMENU)IDC_SCROLLBAR1,                  //控件ID号

            m_hInstance,                            //程序实例句柄

            0);                                     //附加数据

             

    2.设置最小值和最大值(SBM_SETRANGE) 

    SendMessage(hScrollBar, SBM_SETRANGE, 0, 100);

    wParam:  为最小值

    lParam:     为最大值


    3.设置滑块的位置(SBM_SETPOS)

    SendMessage(hScrollBar, SBM_SETPOS, 1, TRUE);

    wParam:  为要设定的位置

    lParam:  TRUE为是否刷新窗口,FALSE为不刷新

    4.获得滑块当前位置(SBM_GETPOS)

    int pos = SendMessage(hCtrl, SBM_GETPOS, 0, 0);

    5.通知消息

    水平通知消息(WM_HSCROLL)

    垂直通知消息(WM_VSCROLL)

    水平通知消息示例:

    LRESULT MyDialog::OnhScroll(WPARAM wParam, LPARAM lParam)

    {

        int nSbCode = LOWORD(wParam);  //获得控件通知消息码

        HWND hCtrl = (HWND)lParam;    //控件句柄

        /*WORD lPos = HIWORD(wParam);*/只有拖动滑块时才有滑块当前位置信息

        int pos = SendMessage(hCtrl, SBM_GETPOS, 0, 0);  //获得当前滑块位置

        switch (nSbCode)

        {

        case SB_LINELEFT:  //点击左边按钮消息

            pos-=5;

            break;

        case SB_LINERIGHT:  //点击右边按钮消息

            pos+=5;

            break;

        case SB_PAGELEFT: //点击滑块左边滚动条空白翻页消息

            pos -= 20;

            break;

        case SB_PAGERIGHT:  //点击滑块右边空白处为翻页消息

            pos += 20;

            break;

            /*case SB_THUMBTRACK:  //拖动滑块时消息

                SendMessage(hCtrl, SBM_SETPOS, lPos, 1);

                return true;*/

        case SB_THUMBPOSITION:  //拖动滑块放开消息

            pos = HIWORD(wParam);   

            break;

        }

        SendMessage(hCtrl, SBM_SETPOS, pos, 1); //设置当前位置=pos,并重绘控件

        CString str;

        str.Format(TEXT("%d"), pos);

        SetDlgItemText(IDC_STATIC1, str);

        return LRESULT();

    }

      
    
    签名:GreenLeaf1976
  • 相关阅读:
    习题8-2 在数组中查找指定元素 (15分)
    习题8-1 拆分实数的整数与小数部分 (15分)
    练习8-8 移动字母 (10分)
    练习8-2 计算两数的和与差 (10分)
    习题6-6 使用函数输出一个整数的逆序数 (20分)
    狼人杀心得
    PHP配置文件详解
    15个实用的PHP正则表达式
    浅谈 PHP 中的多种加密技术及代码示例
    每个程序员都应该知道的 16个最佳 PHP 库
  • 原文地址:https://www.cnblogs.com/greenleaf1976/p/14786602.html
Copyright © 2011-2022 走看看