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
  • 相关阅读:
    Go基础数据类型
    在foreach中使用distinct查找不重复记录
    DataTable,List去重复记录的方法(转载)
    ArcEngine的IMap接口(转载)
    根据Excel表格建立Shp文件(开发详解及源代码)(转载)
    axmapcontrol和mapcontrol有什么区别呢(转发)
    DataSet多表查询操作(转载)
    c#调用DLL(转载)
    wall 系列技术贴
    ArcEngine的IFeaturLayer接口(转载)
  • 原文地址:https://www.cnblogs.com/greenleaf1976/p/14786602.html
Copyright © 2011-2022 走看看