最近学习C语言,用C语言和window SDK
做一个音乐播放器,做到一个就遇到了问题。怎么用滑块控件控件音量,在网上搜了很多资源大多数都是讲在MFC下滑块的使用,纯SDK的基本上没有!下面我介绍一下我是怎么响应滑块拖动事件的:
滑块控件”和“滚动条”在使用上是有去别的,虽然使用他们都会触发
“WM_VSCROOL” 或者“WM_HCSROLL”消息。
1,滚动条可以通过 "SetScrollRange(....)" 来设置 滚动条的范围。但此API函数对滑块控件不起作用!
可以通过向滑块空间发送 “TBM_SETRANGE” 消息,可以通过调用SendMessage(hwndCtrl,
TMB_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(0, 100)); 将滑块的 范围设置为
“0 到 100”, hwndCtrl为滑块的句柄,可以通过GetDlgItem(...)获取, WPARAM 为 TRUE or
FALSE 表示是否重绘, LPARAM为要设置的范围:地位为最小值,高位为最大值。
2,滚动条可以通过“SetScrollPos(....)”来时设置滑块的位置。同样此API函数不适用于滑块控件!通过向滑块控件发送
“TBM_SETPOS” 消息设置滑块的位置,WPARAM 和 LPARAM 可以查阅MSDN。
(这是在 commctrl.h
里定义的所有可以向 滑块控件发送的消息,请查阅msdn获取解释)
3,触动“滚动条”和“滑块控件”都会触发 “WM_HSCROLL”
消息(垂直的为“WM_VSCROLL”),但是通知吗是不一样的:
wParam
HIWORD是LOWORD做为SB_THUMBPOSITION或SB_THUMBTRACK滚动框的当前位置,否则,这个词不使用。
LOWORD做为指定一个滚动条值,指出用户的滚动要求。这个参数可以是下列值之一。
SB_PAGEDOWN 向下滚动一页
SB_LINEDOWN 向下滚动一行
SB_PAGEUP 向上滚动一页
SB_LINEUP 向上滚动一行
SB_TOP 滚动到顶端
SB_BOTTOM 滚动到底部
SB_THUMBPOSITION
用户有拖动滚动框 (滑块),并释放鼠标按钮。HIWORD 指示在拖动操作结束时
滚动框的位置。
SB_THUMBTRACK 用户正在拖动滚动框。直到用户释放鼠标按钮,反复发送此邮件。HIWORD 指示滚动
框已被拖动到的位置。
以下是滑块控件的通知码(即LOWORD(wParam)):
lParam
如果lParam参数等于0,就说明它是窗口滚动条;如果等于滚动条窗口句柄,就说明它是滚动条控件或者滑块控件。