win32程序,无法播放声音,求解是那里错了吗,报错原因在最后请大老指教
#include <iostream>#include <tchar.h>#include <windows.h>#include <cstring>#include "resource.h"#include <mmsystem.h>#pragma comment(lib, "winmm.lib") using namespace std; LRESULT CALLBACK MyWindowProc(HWND,UINT,WPARAM,LPARAM);LRESULT CALLBACK MyWindowProc1(HWND,UINT,WPARAM,LPARAM);HINSTANCE appInstance;int MynCmdShow;int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ WNDCLASSEXA wc; HWND hWnd; MSG msg; MynCmdShow=nCmdShow; appInstance=hInstance; wc.cbClsExtra=NULL; wc.cbSize=sizeof(wc); wc.cbWndExtra=NULL; wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_HICON1)); wc.hIconSm=NULL; wc.hInstance=hInstance; wc.lpfnWndProc=MyWindowProc; wc.lpszClassName="MyClassName"; wc.lpszMenuName=NULL; wc.style=CS_VREDRAW|CS_HREDRAW; RegisterClassExA(&wc); hWnd=CreateWindow("MyClassName","【大话西游2】",WS_OVERLAPPEDWINDOW&~WS_MAXIMIZEBOX^WS_THICKFRAME,400,100,800,600,NULL,NULL,hInstance,NULL); ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); while(GetMessage(&msg,NULL,0,0)>0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;} LRESULT CALLBACK MyWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){ HDC hdc,mdc; PAINTSTRUCT ps; HBITMAP hbmp; static int x,y,mx=613,my=90; static char *BUTTONname[6]={"【进入游戏】","【注册账号】","【点卡服务】","【游戏主页】","【制作团队】","【退出游戏】"}; static int BUTTONid[6]={1000,1001,1002,1003,1004,1005}; HWND BUTTON[6]; switch(uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_SIZE: x=LOword(lParam); y=HIword(lParam); return 0; case WM_PAINT: hdc=BeginPaint(hwnd,&ps); mdc=CreateCompatibleDC(hdc); hbmp=(HBITMAP)LoadImage(NULL,"dhxydy.bmp",IMAGE_BITMAP,x,y,LR_LOADFROMFILE); SelectObject(mdc,hbmp); BitBlt(hdc,0,0,x,y,mdc,0,0,SRCCOPY); DeleteObject(hbmp); DeleteDC(mdc); EndPaint(hwnd,&ps); return 0; case WM_CREATE: PlaySound(TEXT("动人黄昏.wav"),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP); ??? for(int i=0;i<6;i++) { BUTTON[i]=CreateWindow("BUTTON",BUTTONname[i],WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,mx,my,150,40,hwnd,(HMENU)BUTTONid[i],appInstance,NULL); my+=65; } case WM_COMMAND: switch(LOWORD(wParam)) { case ID_BUTTON0: static string str="游戏载入中请稍后"; hdc=GetDC(hwnd); for(int i=0;i<80;i++) { str=str+">"; TextOut(hdc,10,500,str.c_str(),str.length()); Sleep(10); } str="游戏载入中请稍后"; InvalidateRect(hwnd,NULL,1); ReleaseDC(hwnd,hdc); return 0; case ID_BUTTON1: return 0; } return DefWindowProc(hwnd,uMsg,wParam,lParam);}报错 :In function `Z12MywindowProcP6HWND_jj1@16':第二个错:undefined reference to "PlaySoundA@12· error: ld returned 1 exit status
你程序编译都没有通过,不用就播放声音了。
你用的什么编译器?若是vc、BC没有问题,若是gcc(如code::block,dev-cpp,c-free等),你的
#pragma comment(lib, "winmm.lib")
没有意义的,要在编译选项中加
-lwinmm
的
如dev-cpp的
而我常用codelite,同样