티스토리 뷰
API 사운드
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
헤더와 Lib 정의 필요함.
1. 기본함수
BOOL sndPlaySound(
LPCTSTR 사운드파일명,
UINT 사운드출력방식);
<출력방식>
SND_ASYNC 비동기식으로 wave파일이 실행될때 다른 작업도 동시 가능
SND_LOOP wave파일 무한반복
SND_MEMORY 사운드가 메모리에 있음
SND_NODEFAULT 지정한 경로에 wave파일이 없어도 경고음 안나옴
SND_NOSTOP wave파일이 실행되고 또 다른 wave파일 실핼되면 기존 wave실행을 중단
SND_SYNC 지정한 wave파일이 시랳ㅇ하는 동안 다른 작업할 수 없음
간단한 wave 형태의 사운드만 출력해주는 함수로 성공하면 TRUE 반환
플레이 중지할때는 sndPlaySound(NULL, SND_ASYNC); 를 호출한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN:
sndPlaySound(L"tada.wav", SND_ASYNC | SND_LOOP); // WAV 파일 무한 반복
break;
case WM_RBUTTONDOWN:
sndPlaySound(NULL, SND_ASYNC); // 중지
break;
|
cs |
2. 확장된 함수
BOOL WINAPI PlaySound(
LPCSTR wave파일명,
HMODULE 리소스를 가진 실행파일 핸들,
DWORD 출력방식);
리소스 나 레지스트리에 등록된 WAV파일을 플레이 가능하도록 확장된 함수
주석처리된거 처럼 WAV파일을 직접 플레이도 가능함.
1
2
3
4
5
6
7
8
9
10
11 |
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN:
//PlaySound(L"tada.wav", NULL, SND_ASYNC | SND_LOOP); // WAV 파일 무한 반복
PlaySound(MAKEINTRESOURCE(IDR_WAVE), hInst, SND_ASYNC | SND_LOOP | SND_RESOURCE); // WAV 파일 무한 반복
break;
case WM_RBUTTONDOWN:
PlaySound(NULL, NULL, SND_ASYNC); // 중지
break; |
cs |
HKEY_CURRENT_USER\AppEvents\EventLabels\SystemAsterisk
위 레지스트리에 등록된 WAV 플레이이
1
2
3
4
5
6
7
8
9
10
11 |
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN:
PlaySound(L"SystemAsterisk", NULL, SND_ASYNC | SND_LOOP); // 레지스트리 등록된 WAV 파일 플레이
break;
case WM_RBUTTONDOWN:
PlaySound(NULL, NULL, SND_ASYNC); // 중지
break;
|
cs |