|
안녕하세요...
간단하지만, 어찌해야 할지 모르는 문제가 발생해서 여러분의 도움 부탁드립니다.
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() 함수가 이 부분을 해결하는것인지,
아니면 다른 어떤것을 설정해야 하는것인지 모르겠네요..
도움말 기다리겠습니다..감사합니다.
|