【问题标题】:How to reverse a trackbar's range ? (commctrl.dll)如何反转轨迹栏的范围? (commctrl.dll)
【发布时间】:2016-04-18 20:31:27
【问题描述】:

我想用comctrl.dll 的trackbar 来调整音量,最低值在底部,最高值在顶部,与正常情况相反,但我做不到。 TBS_REVERSED 标志似乎对滑块没有任何影响,并且不支持反转 TBM_SETRANGE 消息中的最小值和最大值。使用 TBM_SETRANGEMIN 和 MAX 单独进行......

HWND hwndTrack = CreateWindowEx(
        NULL,                               // no extended styles 
        TRACKBAR_CLASS,                  // class name 
        L"Trackbar Control test",              // title (caption) 
        WS_CHILD | WS_VISIBLE | TBS_AUTOTICKS | TBS_VERT | TBS_TOOLTIPS | TBS_DOWNISLEFT | TBS_REVERSED,              // style 
        10, 44,                          // position 
        30, 200,                         // size 
        hwnd,                         // parent window 
        (HMENU)IDC_MAIN_TRACKBARTEST,                     // control identifier 
        GetModuleHandle(NULL),                         // instance 
        NULL                             // no WM_CREATE parameter 
        );
    SendMessage(hwndTrack, TBM_SETRANGE,
        (WPARAM)TRUE,                   // redraw flag 
        (LPARAM)MAKELONG(0, 127));  // min. & max. positions

【问题讨论】:

    标签: c++ user-interface winapi slider controls


    【解决方案1】:

    一个简单的方法是反转结果。

    类似:

    result_value = max_value - trackbar_value;
    

    反过来设置值。

    【讨论】:

    • 是的,这是我打算使用的解决方法,直到如果可能的话,有一种方法可以直接在控件中执行。
    • 如果控件本身不支持,这似乎是唯一的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多