PROCEDURE GetVolume LOCAL nVolume nVolume = 0 IF THIS.hDevice <> 0 = waveOutGetVolume(THIS.hDevice, @nVolume) ENDIF nVolume = Int(BitAnd(0x0000ffff, nVolume)/0xffff) * 10 nVolume = Min(10, Max(1, nVolume)) THIS.cmbVolume.ListIndex = nVolume PROCEDURE SetVolume(nVolume) LOCAL nLeft, nRight nVolume = MIN(MAX(nVolume, 1), 10) nLeft = Int(nVolume * 0xffff / 10) nRight = BitLShift(nLeft, 16) nVolume = nLeft + nRight = waveOutSetVolume(THIS.hDevice, nLeft + nRight)Complete code (members area):