C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[36918] [질문]DirectSound 에서 포커스 상실시 사운드 출력 중지가.....
김민식 [mspower] 1197 읽음    2004-08-21 15:00
안녕하세요...

간단하지만, 어찌해야 할지 모르는 문제가 발생해서 여러분의 도움 부탁드립니다.

DirectSound 에서 WAV 파일 출력이 잘 되는데요...

다른 응용 프로그램으로 포커스(액티브 윈도우?)가 변경시 사운드 출력이 중지되고,

포커스를 받을때만 사운드가 출력이 되네요..

현재 SetCooperativeLevel(handle, DSSCL_PRIORITY) 함수로 협조 레벨을 설정하였는데,

다른 모든 값들로 해봐도 역시 같은 증상이...

1. DSSCL_EXCLUSIVE  : DirectX 8.0 이후에서는, DSSCL_PRIORITY 와 같은 효과를 가진다. 그 이전의 버젼에서는, 애플리케이션을 배타 레벨로 설정한다. 즉, 입력초점을 가지고 있는 애플리케이션만이 소리를 낼 수 있다. DSBCAPS_GLOBALFOCUS 플래그가 설정되어 있는 애플리케이션의 사운드는 무음이 된다. 이 레벨로 설정된 애플리케이션은, DSSCL_PRIORITY 레벨의 모든 특권도 갖추고 있다. 애플리케이션이 입력초점을 얻으면(자), DirectSound 는 마지막 IDirectSoundBuffer8::SetFormat 메서드의 호출로 지정된 하드웨어 포맷을 복원한다

2. DSSCL_NORMAL : 표준 레벨로 설정한다. 이 레벨은 가장 순조로운 multitasking와 리소스 공유의 동작을 얻을 수 있지만,1차 버퍼 의 포맷의 변경은 실시하지 못하고, 출력은 디폴트의 8 비트 포맷으로 한정된다.

3. DSSCL_PRIORITY  : 우선 레벨로 설정한다. 이 협조 레벨로 설정된 애플리케이션은,IDirectSoundBuffer8::SetFormat 메서드와 IDirectSound8::Compact 메서드를 호출할 수가 있다.

4. DSSCL_WRITEPRIMARY  : 쓰기 우선 레벨로 설정한다. 이 애플리케이션은, 1차 버퍼에의 쓰기 액세스를 가진다. 2차 버퍼는 모두 재생할 수 없다. 장치에 대해서 DirectSound 드라이버가 에뮬레이트 되고 있는 경우, 즉 IDirectSound8::GetCaps 메서드가 DSCAPS 구조체로 DSCAPS_EMULDRIVER 플래그를 돌려주었을 경우는, 이 레벨을 설정할 수 없다.


도움말을 참조하여 위 네개의 인자로 모두 해봐도 안되네요...

SetCooperativeLevel() 함수가 이 부분을 해결하는것인지,

아니면 다른 어떤것을 설정해야 하는것인지 모르겠네요..

도움말 기다리겠습니다..감사합니다.

+ -

관련 글 리스트
36918 [질문]DirectSound 에서 포커스 상실시 사운드 출력 중지가..... 김민식 1197 2004/08/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.