728x90
반응형
효과 소리를 내기 위해서 PlaySound API를 이용합니다.
참고로 SND_ALIAS, FILENAME, SND_RESOURCE 는 서로 배타적으로 동작하는 플래그로 함께 사용하면 안됩니다. 만약, 위 플래그들 중 하나를 명시적으로 지정하지 않은 경우, pszSound 파라미터는 별명(SND_ALIAS)으로 먼저 인식되어 레지스트리에 등록된 소리를 찾고 해당 별명이 없을 경우, 파일명으로 생각하고 해당 파일을 연주하게 됩니다.
function PlaySound(pszSound: PChar; hmod: HMODULE; fdwSound: DWORD): BOOL; stdcall;
MMSystem 유닛에 위와 같이 정의되어 있습니다.
첫번재 파라미터 pszSound 는 효과 소리 파일에 대한 별명 / 리소스 아이디 / 파일명이 옵니다.
두번째 파라미터 hmod 는 별명이나 파일명인 경우, 0을 넣고 리소스인 경우 해당 리소스인 인스턴스 핸들을 넘겨줍니다.
세번째 파라미터 fdwSound에는 다음과 같은 파라미터가 올 수 있습니다.
SND_SYNC = $0000; { play synchronously (default) } SND_ASYNC = $0001; { play asynchronously } SND_NODEFAULT = $0002; { don't use default sound } SND_MEMORY = $0004; { lpszSoundName points to a memory file } SND_LOOP = $0008; { loop the sound until next sndPlaySound } SND_NOSTOP = $0010; { don't stop any currently playing sound } SND_NOWAIT = $00002000; { don't wait if the driver is busy } SND_ALIAS = $00010000; { name is a registry alias } SND_ALIAS_ID = $00110000; { alias is a predefined ID } SND_FILENAME = $00020000; { name is file name } SND_RESOURCE = $00040004; { name is resource name or atom } SND_PURGE = $0040; { purge non-static events for task } SND_APPLICATION = $0080; { look for application specific association }
참고로 SND_ALIAS, FILENAME, SND_RESOURCE 는 서로 배타적으로 동작하는 플래그로 함께 사용하면 안됩니다. 만약, 위 플래그들 중 하나를 명시적으로 지정하지 않은 경우, pszSound 파라미터는 별명(SND_ALIAS)으로 먼저 인식되어 레지스트리에 등록된 소리를 찾고 해당 별명이 없을 경우, 파일명으로 생각하고 해당 파일을 연주하게 됩니다.
SND_NODEFAULT 플래그는 소리를 연주할 수 없을 때 경고음을 내지 않도록 합니다.
SND_ALIAS를 이용할 경우, 다음과 같은 별명을 이용하여 윈도우 기본 소리를 연주할 수 있습니다.
SystemDefault - 기본 경고음 SystemAsterisk - 일반 메시지 SystemExclamation - 경고 메시지 SystemHand - 시스템 오류 SystemQuestion - 질문 SystemStart - 시스템 시작 SystemExit - 시스템 종료
[[ 사용예 ]]
PlaySound('SystemAsterisk',0,SND_ASYNC or SND_ALIAS); // 일반 메시지음을 비동기모드로 연주 PlaySound('Test.wav', 0, SND_ASYNC); // Test.wav 파일을 비동기모드로 연주 PlaySound('C:\Sound\Test.wav', 0, SND_ASYNC or SND_LOOP); // C:\Sound 의 Test.wav 파일을 비동기모드로 반복해서 연주 PlaySound('SystemStart', 0, SND_ASYNC or SND_ALIAS); // "시스템 시작" 사운드를 비동기모드로 연주 PlaySound(MAKEINTRESOURCE(IDR_WAVE), g_hInst, SND_RESOURCE or SND_ASYNC); // 리소스에서 IDR_WAVE1 로 지정된 사운드파일을 비동기 모드로 연주
'프로그래밍 > 델파이' 카테고리의 다른 글
DLL에 버전 정보를 넣어 보자 (0) | 2007.12.21 |
---|---|
StrToInt 함수에서, 16진수의 변환 (0) | 2007.12.21 |
[GR32] 다각형 영역만 클립보드로 복사하기 (0) | 2007.12.21 |
브라우저를 포함한 창의 크기를 HTML 소스에 따라 자동 조정하기 (0) | 2007.12.21 |
WM_SYSCOMMAND로 NONCLIENT 영역의 마우스 동작 흉내내기 (0) | 2007.12.21 |