控制电脑的左右声道

      本实例通过两个滑动条来分别控制电脑PC的左右声道。主要通过waveOutGetVolume函数来获得系统的音量,通过waveOutSetVolume来设置音量。系统音量是个DWORD值,它的低两个字节表示左声道音量,高两个字节表示右声道音量;音量范围都是从0X0000到0XFFFF。

(1)新建一个MFC对话框,在对话框上添加两个slider控件,ID分别是IDC_LEFT和IDC_RIGHT。再利用类向导分别给两个控件添加CSliderCtrl型控制变量m_left和m_right。

(2)在StdAfx.h中,加入如下代码

#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")

加入跟多媒体相关的头文件和库

(3)在OnInitDialog函数中末尾设置slider控件的范围。

 m_left.SetRange(0,200);
 m_right.SetRange(0,200);   //最大也仅单字节

(4)用类向导给对话框添加一个WM_HSCROLL的消息处理,编辑消息处理函数如下:

void CScrollBarDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
       DWORD pos;
       int scrollpos;
       if (pScrollBar->m_hWnd == m_left.m_hWnd)    //左声道
       {
             scrollpos = m_left.GetPos();                      //获得当前位置相对值
             ::waveOutGetVolume(0,&pos);                 //获得当前音量绝对值
             pos = pos&0x0000ffff|(scrollpos<<8);       //获得绝对左音量,scrollpos左移8位是为了获得左音量的高部分值
             ::waveOutSetVolume(0,pos);
         }
         if (pScrollBar->m_hWnd == m_right.m_hWnd)   //右声道
        {
              scrollpos = m_right.GetPos();                      //获得当前位置相对值
              ::waveOutGetVolume(0,&pos);                 //获得当前音量绝对值
              pos = pos&0xffff0000|(scrollpos<<24);    //获得绝对右音量,scrollpos左移24位是为了获得右音量的高部分值
              ::waveOutSetVolume(0,pos);
         }
         CDialog::OnHScroll(nSBCode,nPos,pScrollBar);   //默认父类
}

编译后即可单独有效控制左右声道。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值