如何反转轨迹栏的范围? (COMMCTRL.DLL)

时间:2016-01-13 18:06:16

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

我想使用comctrl.dll轨道栏进行声级调整,其最低值位于底部,最高位于顶部,与正常情况相反,但我无法做到。 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

1 个答案:

答案 0 :(得分:2)

一种简单的方法是扭转结果。

类似的东西:

result_value = max_value - trackbar_value;

反过来设定价值。