还是音量设置问题,vb代码转成pb代码

bombshell 2006-05-18 11:38:16
在取值是0-65536的这段带码怎么改?

Public Sub SetVol()
Dim lVol As Long, rVol As Long, vMax As Long
vMax = CLng(VScroll1.Value) + 32768
If HScroll1.Value < 0 Then
lVol = vMax
rVol = vMax * (HScroll1.Value + 32767) / 32767
Else
rVol = vMax
lVol = vMax * Abs(HScroll1.Value - 32767) / 32767
End If
SetWaveVolume lVol, rVol
End Sub

=======================================

Public Sub GetVol()
Dim lVol As Long, rVol As Long, vMax As Long

GetWaveVolume lVol, rVol

If rVol > lVol Then
vMax = rVol
HScroll1.Value = 32767 * (vMax - lVol) / vMax
ElseIf rVol = lVol Then
vMax = rVol
HScroll1.Value = 0
Else
vMax = lVol
HScroll1.Value = (-32767& * (vMax - rVol) / vMax)
End If


vMax = vMax - 32768

VScroll1.Value = vMax

End Sub
...全文
243 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzheng2001 2006-05-19
  • 打赏
  • 举报
回复
那么你就设置成 0 - 32767 吧

你的代码改成
setwavevolume(vTtrackBarL.Position * 2,vTtrackBarR.Position * 2)
这样就行了!很基本的换算呀!

初始化显示音量的时候,你只要写
vTtrackBarL.Position = lvol / 2
vTtrackBarR.Position = rvol / 2
即可
bombshell 2006-05-19
  • 打赏
  • 举报
回复
我是想用户打开程序后当前的音量值 = vTtrackBar.Position
bombshell 2006-05-19
  • 打赏
  • 举报
回复
关键是vTtrackBar的MinPosition=0 MaxPosition = 32767了?

没发设置成65536呀?
lzheng2001 2006-05-18
  • 打赏
  • 举报
回复
上面的函数代码贴错了,再贴

/*****************************************************************
*函数名称: setwavevolume
*参 数: long lvolume by value , long rvolume by value
*作 用: 设置系统音量
****************************************************************/


long svolume
integer volumeset[2]

if lvolume > 32767 then
lvolume = lvolume - 65536
end if
if rvolume > 32767 then
rvolume = rvolume - 65536
end if

svolume = lvolume * 2^16 + rvolume

waveoutsetvolume(WAVE_MAPPER , svolume)

lzheng2001 2006-05-18
  • 打赏
  • 举报
回复
楼主的上一个贴子不是已经解决了设置与读取音量的问题了吗?

你现在只要在窗口上放置两个vTtrackBar设置MinPosition=0 MaxPosition = 65535

然后分别在两个控件的move事件(或者其它事件也可以)写一句代码就可以了
setwavevolume(vTtrackBarL.Position,vTtrackBarR.Position)
当然你也可以加一个OK按钮,把这行代码写在clicked事件中

*****************************************************************
*函数名称: setwavevolume
*参 数: long lvolume by value , long rvolume by value
*作 用: 设置系统音量
****************************************************************/


long svolume
integer volumeset[2]

if lvolume > 32767 then
lvolume = lvolume - 65536
end if
if rvolume > 32767 then
rvolume = rvolume - 65536
end if
volumeset[1] = lvolume
volumeset[2] = rvolume
copymemory(svolume , volumeset[1] , 4)
waveoutsetvolume(WAVE_MAPPER , svolume)
lzheng2001 2006-05-18
  • 打赏
  • 举报
回复
marks,有时间再来看看

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧