«Аргумент типа int несовместим с параметром типа lpcwstr» в файлах ресурсов Visual Studio - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь добавить файл .wav в качестве ресурса в мою игру C ++ и играть в нее во время выполнения.Вот мой код в моем основном классе:

PlaySound(IDR_WAVE1, GetModuleHandle(NULL), SND_FILENAME);

Мой resource.h файл:

#define IDR_WAVE1                       104
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        105
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

И мой .rc файл:

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (United States) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE
BEGIN
    "#include ""winres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

#endif    // English (United States) resources
/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
// English (Australia) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS

/////////////////////////////////////////////////////////////////////////////
//
// WAVE
//

IDR_WAVE1 WAVE "C:\\Users\\zjf\\Desktop\\phil.wav"

#endif    // English (Australia) resources    
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

ПроблемаЯ получаю сообщение об ошибке при попытке воспроизвести этот файл с ресурса.

аргумент типа int несовместим с параметром типа lpcwstr

Я включилзаголовок resource.h, и я попытался добавить кавычки в

PlaySound(IDR_WAVE1, GetModuleHandle(NULL), SND_FILENAME);

Так что в итоге получилось бы:

PlaySound("IDR_WAVE1", GetModuleHandle(NULL), SND_FILENAME);

Тем не менее, это заставило компьютер Windows подать звуковой сигнал только один раз.

Буду признателен за любую помощь, поскольку я никогда не работал с файлами ресурсов.

1 Ответ

0 голосов
/ 10 декабря 2018

Вместо:

PlaySound(IDR_WAVE1, GetModuleHandle(NULL), SND_FILENAME);

изменить на:

PlaySound(MAKEINTRESOURCE(IDR_WAVE1), GetModuleHandle(NULL), SND_RESOURCE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...