본문 바로가기
C & C++/C & C++

시스템 볼륨 음소거

by izen8 2011. 12. 14.
반응형
 

* 먼저 소스코드를 작성하기 전에 아래와 같은 순서로 하시면 됩니다.

 

[1] #include 부분에서 mmsystem.h 를 선언합니다. 그리고 프로젝트(Project) ->
     세팅(Setting) -> 링크(Link)에서 Object/library modules: 이부분에 winmm.lib를
     추가(작성)해줍니다.     * 또 다른 방법으로는 #include 부분에서 mmsystem.h 를 선언한 후 프로젝트(Project) ->
       추가(Add To Project) -> 컴포넌트 & 콘트롤(Componemts and Control) -> Visual C++ Components
       -> Windows Multimedia library 를 선택하셔도 됩니다.
[2] 다이얼로그 protected 부분에서 virtual void SetMusicVolume(float fPercent); 선언class 다이얼로그명 : public CDialog
{
    .
    .   protected: // 이부분에서 아래와 같이 선언을 해줍니다.      virtual void SetMusicVolume(float fPercent);
   .
   .
[3] 코드내부에 아래 소스코드 작성void 다이얼로그명::SetMusicVolume(float fPercent)
{
   DWORD    dVolume=0xffffffff;
   WORD    left=HIWORD(dVolume),right=LOWORD(dVolume);
   right=UINT(right*fPercent);
   left =UINT(left *fPercent);
   dVolume=left;
   dVolume=dVolume<<16;
   dVolume=dVolume+ right;
   waveOutSetVolume(NULL,dVolume);
}

 

[4] 원하는 항목에 아래와 같이 작성합니다.SetMusicVolume(100);    // 100을 하면 소리가 나오고
SetMusicVolume(0);       // 0을 하면 음소거 기능처럼 소리가 나오지 않습니다.
SetMusicVolume(NULL); // NULL 값을 줘도 음소거 기능처럼 소리가 나오지 않습니다.

 


 

 

 


시스템의 볼륨을 조절하는 함수에는 

mixerOpen, mixerGetDevCaps, mixerClose, mixerGetLineInfo, mixerGetLineControls, mixerGetControlDetails, mixerSetControlDetails 등의 함수가 사용된다.

 

참고 사이트 : http://www.codeproject.com/audio/admixer.asp(두번째 예제(Program 2. Master Volume) 에서 MIXERLINE_COMPONENTTYPE_DST_SPEAKERS 인자를 MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT 로 수정하면 조절할 수 있는 항목이 (마스터) 볼륨 컨트롤에서 웨이브 로 바뀐다)또한 MSDN 의 HOWTO: Monitor Audio Volume Levels 기술문서에서 예제를 찾을 수 있다 (Q181550) 

 

반응형

'C & C++ > C & C++' 카테고리의 다른 글

특정 문자열 기준으로 자르기  (0) 2011.12.14
ini 파일 저장 및 읽기  (0) 2011.12.14
타이머 및 진행 시간 표시  (0) 2011.12.14
파일( 문자열 )암호화 하기  (0) 2011.12.14
[Tip] 스크린 세이버 동작 못하게  (0) 2011.12.14

댓글