亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 設置系統的聲音大小左右聲道.txt

?? vc使用技巧匯集
?? TXT
字號:
請問大家要怎樣才能設置系統的聲音大小,左右聲道呢?  
 
是使用MCI中的函數嘛?  
--------------------------------------------------------------  
控制大小:  
BOOL  CVolumeDlg::amdInitialize()  
{  
           //  get  the  number  of  mixer  devices  present  in  the  system  
           m_nNumMixers  =  ::mixerGetNumDevs();  
 
           m_hMixer  =  NULL;  
           ::ZeroMemory(&m_mxcaps,  sizeof(MIXERCAPS));  
 
           //  open  the  first  mixer  
           //  A  "mapper"  for  audio  mixer  devices  does  not  currently  exist.  
           if  (m_nNumMixers  !=  0)  
           {  
                       if  (::mixerOpen(&m_hMixer,  
                                                                       0,  
                                                                       (DWORD)this->GetSafeHwnd(),  
                                                                       NULL,  
                                                                       MIXER_OBJECTF_MIXER    |  CALLBACK_WINDOW)  
                                   !=  MMSYSERR_NOERROR)  
                                   return  FALSE;  
 
                       if  (::mixerGetDevCaps((UINT)m_hMixer,  &m_mxcaps,  sizeof(MIXERCAPS))  
                                   !=  MMSYSERR_NOERROR)  
                                   return  FALSE;  
           }  
 
           return  TRUE;  
}  
 
BOOL  CVolumeDlg::amdUninitialize()  
{  
           BOOL  bSucc  =  TRUE;  
 
           if  (m_hMixer  !=  NULL)  
           {  
                       bSucc  =  ::mixerClose(m_hMixer)  ==  MMSYSERR_NOERROR;  
                       m_hMixer  =  NULL;  
           }  
 
           return  bSucc;  
}  
 
BOOL  CVolumeDlg::amdGetMasterVolumeControl()  
{  
           m_strDstLineName.Empty();  
           m_strVolumeControlName.Empty();  
 
           if  (m_hMixer  ==  NULL)  
                       return  FALSE;  
 
           //  get  dwLineID  
           MIXERLINE  mxl;  
           mxl.cbStruct  =  sizeof(MIXERLINE);  
           mxl.dwComponentType  =  MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;  
           if  (::mixerGetLineInfo((HMIXEROBJ)m_hMixer,  
                                                                             &mxl,  
                                                                             MIXER_OBJECTF_HMIXER    |  
                                                                             MIXER_GETLINEINFOF_COMPONENTTYPE)  
                       !=  MMSYSERR_NOERROR)  
                       return  FALSE;  
 
           //  get  dwControlID  
           MIXERCONTROL  mxc;  
           MIXERLINECONTROLS  mxlc;  
           mxlc.cbStruct  =  sizeof(MIXERLINECONTROLS);  
           mxlc.dwLineID  =  mxl.dwLineID;  
           mxlc.dwControlType  =  MIXERCONTROL_CONTROLTYPE_VOLUME;  
           mxlc.cControls  =  1;  
           mxlc.cbmxctrl  =  sizeof(MIXERCONTROL);  
           mxlc.pamxctrl  =  &mxc;  
           if  (::mixerGetLineControls((HMIXEROBJ)m_hMixer,  
                                                                                         &mxlc,  
                                                                                         MIXER_OBJECTF_HMIXER    |  
                                                                                         MIXER_GETLINECONTROLSF_ONEBYTYPE)  
                       !=  MMSYSERR_NOERROR)  
                       return  FALSE;  
 
           //  record  dwControlID  
           m_strDstLineName  =  mxl.szName;  
           m_strVolumeControlName  =  mxc.szName;  
           m_dwMinimum  =  mxc.Bounds.dwMinimum;  
           m_dwMaximum  =  mxc.Bounds.dwMaximum;  
           m_dwVolumeControlID  =  mxc.dwControlID;  
 
           return  TRUE;  
}  
 
BOOL  CVolumeDlg::amdGetMasterVolumeValue(DWORD  &dwVal)  const  
{  
           if  (m_hMixer  ==  NULL    |  |  
                       m_strDstLineName.IsEmpty()    |  |  m_strVolumeControlName.IsEmpty())  
                       return  FALSE;  
 
           MIXERCONTROLDETAILS_UNSIGNED  mxcdVolume;  
           MIXERCONTROLDETAILS  mxcd;  
           mxcd.cbStruct  =  sizeof(MIXERCONTROLDETAILS);  
           mxcd.dwControlID  =  m_dwVolumeControlID;  
           mxcd.cChannels  =  1;  
           mxcd.cMultipleItems  =  0;  
           mxcd.cbDetails  =  sizeof(MIXERCONTROLDETAILS_UNSIGNED);  
           mxcd.paDetails  =  &mxcdVolume;  
           if  (::mixerGetControlDetails((HMIXEROBJ)m_hMixer,  
                                                                                                 &mxcd,  
                                                                                                 MIXER_OBJECTF_HMIXER    |  
                                                                                                 MIXER_GETCONTROLDETAILSF_VALUE)  
                       !=  MMSYSERR_NOERROR)  
                       return  FALSE;  
             
           dwVal  =  mxcdVolume.dwValue;  
 
           return  TRUE;  
}  
 
BOOL  CVolumeDlg::amdSetMasterVolumeValue(DWORD  dwVal)  const  
{  
           if  (m_hMixer  ==  NULL    |  |  
                       m_strDstLineName.IsEmpty()    |  |  m_strVolumeControlName.IsEmpty())  
                       return  FALSE;  
 
           MIXERCONTROLDETAILS_UNSIGNED  mxcdVolume  =  {  dwVal  };  
           MIXERCONTROLDETAILS  mxcd;  
           mxcd.cbStruct  =  sizeof(MIXERCONTROLDETAILS);  
           mxcd.dwControlID  =  m_dwVolumeControlID;  
           mxcd.cChannels  =  1;  
           mxcd.cMultipleItems  =  0;  
           mxcd.cbDetails  =  sizeof(MIXERCONTROLDETAILS_UNSIGNED);  
           mxcd.paDetails  =  &mxcdVolume;  
           if  (::mixerSetControlDetails((HMIXEROBJ)m_hMixer,  
                                                                                                 &mxcd,  
                                                                                                 MIXER_OBJECTF_HMIXER    |  
                                                                                                 MIXER_SETCONTROLDETAILSF_VALUE)  
                       !=  MMSYSERR_NOERROR)  
                       return  FALSE;  
             
           return  TRUE;  
}  
 
調節平衡:  
int  CMixerFader::Init(  DWORD  DstType,  DWORD  SrcType,  DWORD  ControlType,  int  subType  )  
{              
           if  (  m_hWnd  ==  NULL  )  
           {  
                       PrintMessage(  "CMixerFader::Init",  "No  Window  attached.  Did  you  create  or  subclass  one?"  );  
                       return  0;  
           }  
 
           EnableWindow(  FALSE  );  
 
           if(  subType  ==  BALANCE  )  
           {  
                       int  min,  max;  
                       GetRange(  min,  max  );  
                       SetSliderPos(  (  max  -  min  )/2  );  
           }  
 
           //  start  by  checking  the  type  and  subtypes    
 
           if(  (  ControlType  &  MIXERCONTROL_CT_CLASS_MASK  )  !=  MIXERCONTROL_CT_CLASS_FADER  )  
           {  
                       PrintMessage(  "CMixerFader::Init",    
                                                   "Wrong  control  type  for  a  fader  control:  %s",    
                                                   GetControlTypeString(  ControlType  )  );  
                       return  0;  
           }  
           if(  subType  <  LEFT    |  |  subType  >  BALANCE  )  
           {  
                       PrintMessage(  "CMixerFader::Init",  "Wrong  sub-type  for  a  fader  control:  %d",  subType  );  
                       return  0;  
           }  
 
           m_subType  =  subType;  
 
           if(  CMixerBase::Init(  DstType,  SrcType,  ControlType,  m_hWnd  )  ==  0  )  
                       return  0;  
 
           //  set  the  slider  range  and  number  of  steps  from  the  information  obtained  
           //  on  the  mixer  control  
           m_FaderSpan    =  m_Control.Bounds.dwMaximum  -  m_Control.Bounds.dwMinimum;  
           m_FaderStep    =  m_FaderSpan/m_Control.Metrics.cSteps;  
           m_SliderSpan  =  m_Control.Metrics.cSteps;  
             
           SetRange(  0,  m_SliderSpan  );  
 
           if(  m_nChannels  <  2  )  
           {  
                       //  a  balance,  left,  or  right  control  on  a  single  channel  line  doesn't  make  sense  
                       //  abort  and  set  the  balance  slider  to  mid-course  
                       if(  m_subType  ==  LEFT    |  |  m_subType  ==  RIGHT    |  |  m_subType  ==  BALANCE  )  
                       {  
                                   PrintMessage(  "CMixerFader::Init",    
                                                               "Only  one  channel  available  on  this  line.  Use  Fader  type  MAIN  only.\n"  
                                                               "Windows  control  will  be  disabled.\n"  
                                                                           "\nItem:  %s.\n"  
                                                                       "\n(  Line:  %s  )",    
                                                                           GetControlName(),  
                                                                       GetLineName()  );  
 
                                   if(  subType  ==  BALANCE  )  
                                               SetSliderPos(  m_SliderSpan/2  );  
                                   CloseMixer();  
                                   return  0;  
                       }  
           }  
 
           m_Value  =  (MIXERCONTROLDETAILS_UNSIGNED  *)GetValuePtr();  
           if(  m_Value  ==  NULL  )  
           {  
                       PrintMessage(  "CMixerFader::Init",  "m_Value  NULL."  );  
                       CloseMixer();  
                       return  0;  
           }  
 
           if(  GetMixerControlValue()  )  
           {  
                       EnableWindow(  TRUE  );  
                       SetHVSliderPos();  
           }  
 
           return  1;  
}  
void  CMixerFader::SetHVSliderPos()  
{  
           float  MaxVal;  
 
           if(  m_nChannels  >  1  )  
           {  
                       MaxVal  =  (  float  )max(  m_Value[RIGHT].dwValue,  m_Value[LEFT].dwValue  );  
                       if(  MaxVal  >  0  )  
                       {  
                                   m_DeltaOverMax  =  (  (  float  )m_Value[RIGHT].dwValue  -  (  float  )m_Value[LEFT].dwValue  )/MaxVal;  
                       }  
           }  
           else  
           {  
                       MaxVal  =  (  float  )m_Value[0].dwValue;  
           }  
                         
           switch  (  m_subType  )  
           {  
                       case  MAIN:  //  set  the  main  fader  to  the  maximum  value  
                                   SetSliderPos(  int(  MaxVal/m_FaderStep  )  );  
                                   break;  
 
                       case  BALANCE:  //  pos  =  m_SliderSpan/2  *  (  delta/  max  +  1  )  
                                   if(  MaxVal  >  0  )  
                                   {  
                                               SetSliderPos(  int(  m_SliderSpan*(  m_DeltaOverMax  +  1.0  )/2.0  )  );  
                                   }  
                                   break;  
 
                       case  LEFT:  //  only  set  the  left  channel  slider  
                                   SetSliderPos(  int(  (  float  )m_Value[LEFT].dwValue/m_FaderStep  )  );  
                                   break;  
 
                       case  RIGHT:  //  only  set  the  right  channel  slider  
                                   SetSliderPos(  int(  (  float  )m_Value[RIGHT].dwValue/m_FaderStep  )  );  
                                   break;  
 
                       default:  
                                   PrintMessage(  "CMixerFader::SetHVSliderPos",  "Wrong  sub-type  for  a  fader  control."  );  
           }  
}  
void  CMixerFader::SetFaderValue()  
{  
           DWORD  newVal  =  GetSliderValue();  
             
           float  MaxVal;  
 
           if(  m_nChannels  >  1  )  
           {  
                       MaxVal  =  (  float  )max(  m_Value[RIGHT].dwValue,  m_Value[LEFT].dwValue  );  
           }  
           else  
           {  
                       MaxVal  =  (  float  )m_Value[0].dwValue;  
           }  
 
           switch  (  m_subType  )  
           {  
                       case  MAIN:  
                                   if(  m_nChannels  >  1  )  
                                   {  
                                               if(  m_DeltaOverMax  >  0  )  
                                               {  
                                                           m_Value[RIGHT].dwValue  =  newVal;  
                                                           m_Value[LEFT].dwValue  =  DWORD(  newVal*(  1.0f  -  m_DeltaOverMax  )  );  
                                               }  
                                               else  
                                               {  
                                                           m_Value[LEFT].dwValue  =  newVal;  
                                                           m_Value[RIGHT].dwValue  =  DWORD(  newVal*(  1.0f  +  m_DeltaOverMax  )  );  
                                               }  
                                   }  
                                   else  
                                   {  
                                               m_Value[0].dwValue  =  newVal;  
                                   }  
                                   break;  
 
                       case  BALANCE:  
                                   if(  (  int  )newVal  >  m_FaderSpan/2  )  
                                   {  
                                               m_Value[RIGHT].dwValue  =  DWORD(  MaxVal  );  
                                               m_Value[LEFT].dwValue  =  DWORD(  2*MaxVal*(  1.0  -  (  float  )newVal/m_FaderSpan  )  );  
                                   }  
                                   else  
                                   {  
                                               m_Value[RIGHT].dwValue  =  DWORD(  2*MaxVal*(  float  )newVal/m_FaderSpan  );  
                                               m_Value[LEFT].dwValue  =  DWORD(  MaxVal  );  
                                   }  
                                   break;  
 
                       case  LEFT:  
                                   m_Value[LEFT].dwValue  =  newVal;  
                                   break;  
 
                       case  RIGHT:  
                                   m_Value[RIGHT].dwV

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频亚洲一区| 亚洲色图在线视频| 欧美三级在线看| 国产欧美日韩三区| 在线综合+亚洲+欧美中文字幕| 欧美一区二区三区喷汁尤物| 欧美韩国日本综合| 日本女人一区二区三区| av资源网一区| 中文无字幕一区二区三区| 麻豆精品视频在线| 欧美美女一区二区在线观看| 亚洲视频1区2区| 国产不卡视频在线播放| 精品国产sm最大网站| 日本欧洲一区二区| 欧美一区二区三区在线| 香蕉久久一区二区不卡无毒影院 | 一区二区三区在线免费视频| 国产一区二区精品久久99| 欧美电影一区二区| 丝袜美腿亚洲综合| 欧美日韩在线电影| 亚洲一区二区在线免费观看视频| bt欧美亚洲午夜电影天堂| 中文字幕第一区二区| 大桥未久av一区二区三区中文| 精品国产成人在线影院| 精品亚洲国内自在自线福利| 56国语精品自产拍在线观看| 日韩福利视频导航| 91精品国产黑色紧身裤美女| 亚洲成av人片在线观看无码| 欧美美女视频在线观看| 丝袜诱惑亚洲看片| 日韩午夜精品视频| 韩日精品视频一区| 国产农村妇女毛片精品久久麻豆 | 久久尤物电影视频在线观看| 麻豆免费精品视频| 欧美电视剧免费全集观看| 美女一区二区久久| 久久久午夜精品理论片中文字幕| 国产一区二区三区不卡在线观看 | 亚洲黄色尤物视频| 欧美午夜在线观看| 日韩av二区在线播放| 精品区一区二区| 国产成人精品免费视频网站| 综合色天天鬼久久鬼色| 欧美视频一区二区三区四区 | 成人午夜免费av| 国产精品视频一区二区三区不卡| caoporn国产一区二区| 亚洲成人资源网| 精品国产一区二区精华| 国产精品一区二区视频| 亚洲欧美另类小说| 日韩一区二区精品葵司在线| 国产成+人+日韩+欧美+亚洲| 一区二区三区在线影院| 日韩欧美国产一二三区| 成人激情动漫在线观看| 亚洲午夜免费福利视频| 久久蜜桃一区二区| 一本一道综合狠狠老| 日本不卡一二三| 亚洲欧美一区二区久久 | 免费成人在线视频观看| 国产精品天美传媒| 制服丝袜亚洲色图| 成人在线视频首页| 日韩黄色小视频| 中文字幕va一区二区三区| 欧美精品久久99久久在免费线| 国产一区二区三区四区五区美女 | 91在线免费看| 青青草国产成人99久久| 自拍偷拍亚洲综合| 精品福利一区二区三区免费视频| 91久久国产综合久久| 国产精品羞羞答答xxdd| 婷婷夜色潮精品综合在线| 国产精品美女视频| 日韩精品一区二区三区视频播放 | 欧美精品日韩精品| 91蜜桃婷婷狠狠久久综合9色| 九一九一国产精品| 亚洲国产精品麻豆| 中文字幕亚洲欧美在线不卡| 亚洲精品在线电影| 欧美肥妇bbw| 91色.com| zzijzzij亚洲日本少妇熟睡| 亚洲国产视频一区二区| 国产精品美女www爽爽爽| 精品少妇一区二区三区日产乱码| 欧美性一二三区| 一本高清dvd不卡在线观看 | 久久www免费人成看片高清| 亚洲一线二线三线视频| 亚洲欧美日韩久久| 国产精品美女久久久久av爽李琼| 久久亚洲一区二区三区明星换脸| 日韩欧美国产wwwww| 欧美精品777| 欧美日韩国产天堂| 欧美视频一区在线观看| 欧美三级韩国三级日本一级| 日本福利一区二区| 色婷婷综合五月| 91浏览器打开| 在线欧美小视频| 欧洲日韩一区二区三区| 欧美专区亚洲专区| 欧美日韩国产影片| 日韩欧美美女一区二区三区| 日韩欧美国产三级电影视频| 精品国产一区二区精华| 久久先锋影音av| 国产欧美一区二区精品忘忧草 | 亚洲国产日韩一级| 亚洲成人免费观看| 日本成人在线电影网| 蜜桃视频在线观看一区二区| 韩国av一区二区| 国产91精品欧美| 一本一本久久a久久精品综合麻豆| 9色porny自拍视频一区二区| 99riav一区二区三区| 色婷婷一区二区三区四区| 欧美在线综合视频| 欧美一区二区精品| 欧美日韩黄色一区二区| 一区二区三区日本| 日本怡春院一区二区| 国产伦精品一区二区三区免费迷| 国产永久精品大片wwwapp| 成人免费视频一区二区| 色激情天天射综合网| 制服丝袜中文字幕一区| 久久久久久一二三区| 亚洲精品中文在线观看| 日韩在线一区二区| 国产sm精品调教视频网站| 色悠悠亚洲一区二区| 日韩亚洲国产中文字幕欧美| 国产精品免费久久久久| 日韩电影一二三区| 国产成人免费视频网站| 欧美午夜电影网| 久久久激情视频| 亚洲成av人**亚洲成av**| 国产精品一卡二卡| 欧美日韩视频在线一区二区| 久久久久国产成人精品亚洲午夜| 一区二区三区在线视频免费 | 亚洲自拍另类综合| 久久99国产精品久久99果冻传媒| 成人涩涩免费视频| 欧美一级片在线| 综合色天天鬼久久鬼色| 久久99久久精品| 欧美亚洲综合网| 中文字幕精品一区二区三区精品| 午夜一区二区三区在线观看| 成人一级片网址| 日韩欧美综合在线| 亚洲精品日韩一| 国产风韵犹存在线视精品| 91精品一区二区三区久久久久久| 国产精品福利一区| 看片网站欧美日韩| 欧美日韩不卡一区| 亚洲日本va在线观看| 精品午夜一区二区三区在线观看| 色天天综合色天天久久| 久久久影视传媒| 久久精品国产亚洲a| 欧美日韩色一区| 夜夜亚洲天天久久| 99久久国产免费看| 久久久综合激的五月天| 免费精品视频在线| 欧美主播一区二区三区美女| ●精品国产综合乱码久久久久| 国产一区二区三区香蕉| 欧美大片在线观看| 男人的天堂久久精品| 91精品国产综合久久久蜜臀图片| 17c精品麻豆一区二区免费| 成人久久久精品乱码一区二区三区 | 欧美日韩一区二区不卡| 亚洲人吸女人奶水| 丁香天五香天堂综合| 精品欧美黑人一区二区三区| 麻豆成人在线观看| 91精品麻豆日日躁夜夜躁| 日韩二区三区四区| 欧美日韩国产一区|