Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
29 / 29 / 13
Регистрация: 15.11.2012
Сообщений: 93
1

PlaySound

05.10.2013, 06:32. Показов 1451. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.

Есть совершенно обычный, стандартный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <windows.h>
 
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    static char szAppName[] = "Programm's Name";
    HWND        hwnd;
    MSG         msg;
    WNDCLASSEX  wndclass;
    
    wndclass.cbSize             = sizeof(WNDCLASSEX);
    wndclass.style              = CS_HREDRAW | CS_VREDRAW;
    wndclass.cbClsExtra         = 0;
    wndclass.cbWndExtra         = 0;
    wndclass.hCursor            = LoadCursor(NULL, IDC_ARROW);
    wndclass.hIcon              = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hIconSm            = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hbrBackground      = static_cast<HBRUSH> (GetStockObject(WHITE_BRUSH));
    wndclass.hInstance          = hInstance;
    wndclass.lpfnWndProc        = WndProc;
    wndclass.lpszClassName      = szAppName;
    wndclass.lpszMenuName       = NULL;
    
    RegisterClassEx(&wndclass);
    
    hwnd = CreateWindowA(szAppName, "Windows Programm", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 
                         NULL, NULL, hInstance, NULL);
    
    ShowWindow(hwnd, nShowCmd);
    UpdateWindow(hwnd);
    
    while (GetMessage(&msg, NULL, 0, 0))
        {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
        }
        
    return msg.wParam;
    }
    
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    HDC         hdc;
    PAINTSTRUCT ps;
    RECT        rect;
    
    switch (msg)
        {
        case WM_CREATE:
            PlaySound("D:/Windows Exclamation.wav", NULL, SND_FILENAME | SND_ASYNC);
            return 0;
        case WM_PAINT:
            hdc = BeginPaint(hwnd, &ps);
            GetClientRect(hwnd, &rect);
            DrawText(hdc, "Draw Text", -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);
    }
Почему-то компоновщик ругается на неразрешенный внешний элемент 'PlaySound' в сообщении WM_CREATE. Кто-нибудь знает, что не так? Бегло просмотрел здешние темки, но никто вроде с такой проблемой не сталкивался.

Код ошибки:
Кликните здесь для просмотра всего текста

1>WinAPI Source Code.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__PlaySoundA@12 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2013, 06:32
Ответы с готовыми решениями:

Звук в С++ PlaySound
Не робит #include &quot;stdafx.h&quot; #include &lt;SFML/Graphics.hpp&gt; #include &lt;SFML/Audio.hpp&gt; #include...

PlaySound опаздывает
Воспроизвожу wav-файл с частотой 5 раз в секунду. Продолжительность файла - 0,024 с....

PlaySound зависание прерывания
Вообщем использую код для воспроизведения PlaySound(m_strSound, NULL,...

Хэндл в PlaySound() функции
Народ, подскажите, пожалуйста, что есть хэнд и как заставить работать функцию PlaySound() Имею...

3
208 / 45 / 13
Регистрация: 06.09.2010
Сообщений: 99
05.10.2013, 11:48 2
Попробуйте указать руками путь к библиотеке winmm.lib
1
162 / 158 / 62
Регистрация: 28.09.2013
Сообщений: 293
05.10.2013, 13:29 3
#pragma comment(lib, "winmm")
или вручную, как посоветовали выше.
Если в будущем будут возникать подобные ошибки, просто поставьте курсор на функцию, которая выдает ошибку и нажмите F1. В открывшемся msdn, в разделе Requirements, будет сказано, какой .lib требуется подключить.
1
29 / 29 / 13
Регистрация: 15.11.2012
Сообщений: 93
05.10.2013, 15:06  [ТС] 4
Спасибо, действительно помогло. Yanush, и спасибо за полезный совет, теперь буду знать )
0
05.10.2013, 15:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2013, 15:06
Помогаю со студенческими работами здесь

Не проигрывается музыка (PlaySound)
Проблема из вопроса. Не играет музыка. Функция с выбором музыки: int music() //for music...

PlaySound не воспроизводит нужный звук
Я пытаюсь научиться вставлять звук в программу. Покопался в интернете, нашел информацию про функцию...

PlaySound: воспроизвести 2 мелодии одновременно
Здравствуйте! Нужна помощь, цель - воспроизвести 2 мелодии в одно время. Иначе говоря одну поверх...

Что делает PlaySound, и как с ним вообще работать
Господа подскажите что делает PlaySound , и как с ним вообще работать(там по идеи 3 параметра а вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru