今天测试了一下windows32的PlaySound函数,路径没错,运行也不报错,但是却听不到歌曲的声音,运行的时候听到一声“咚”。加个循环的话就发出“咚咚咚”的响声,求帮忙,其中wav文件是由mp3文件修改后缀而成的,无论是绝对路径还是相对路径,都没有听到音乐的效果,还有一定,PlaySound()写的路径正确与否都不会报错,求帮忙?(论坛已求助,无人问津)代码如下:
#include<windows.h>
#pragma comment(lib,"winmm.lib")
#include <mmsystem.h>
LRESULT CALLBACK WindowProc1(
HWND hwnd, // handle to window
UINT Msg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
static TCHAR szAppName[]=TEXT("HelloWin");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_ERROR);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc= WindowProc1;
wndclass.lpszClassName=szAppName;
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
if(!RegisterClass(&wndclass)){
MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppName,MB_ICONERROR);
return 0;
}
hwnd=CreateWindow(
szAppName, // registered class name
TEXT("This is Hello Program"), // window name
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // horizontal position of window
CW_USEDEFAULT, // vertical position of window
CW_USEDEFAULT, // window width
CW_USEDEFAULT, // window height
NULL, // handle to parent or owner window
NULL, // menu handle or child identifier
hInstance, // handle to application instance
NULL // window-creation data
);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowProc1(
HWND hwnd, // handle to window
UINT Msg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(Msg){
case WM_CREATE:
PlaySound(TEXT("tingge.wav"),NULL,SND_FILENAME|SND_ASYNC);
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
DrawText(hdc,TEXT("Hello,Window98!"),-1,&rect,DT_CENTER|DT_SINGLELINE|DT_VCENTER);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,Msg,wParam,lParam);
}
留下你的脚印。。。#include<windowsx.h>
此问题完美解决了,wav格式不能直接由mp3格式修改后缀而得,用格式工厂或千千静听可以转成wav(wave)格式,这样就可以解决了。
下面这个函数也可以播放声音的,系统声音
case WM_CREATE:
//MessageBeep(MB_ICONEXCLAMATION);
//MessageBeep(MB_ICONASTERISK);
//MessageBeep(MB_ICONHAND);
//MessageBeep(MB_ICONQUESTION);
//MessageBeep(MB_OK);
return 0;