win32程序,无法播放声音,求解是那里错了吗,报错原因在最后请大老指教 - 爱问答

(爱问答)

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的

win32程序,无法播放声音,求解是那里错了吗,报错原因在最后请大老指教

而我常用codelite,同样

win32程序,无法播放声音,求解是那里错了吗,报错原因在最后请大老指教

相关标签:声音

下一篇:c语言中voidshellsort(recordtype*r)是什么意思

上一篇:表格如何用函数按条件来返回单元格里的数据,如图所示

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?