Как правильно использовать файлы ресурсов в проекте MFC?

Я сделал игру на основе MFC, и мой проект включает в себя изображения и звуки. Теперь я хочу создать установщик для его распространения.

Я использовал ресурсы, указав их точный путь, например, в

img->Load(L"C:\\Users\\Ad33l's\\Desktop\\block mania\\block mania\\res\\db.png");

MCIWndCreate(NULL, NULL,WS_POPUP|MCIWNDF_NOPLAYBAR|MCIWNDF_NOMENU,L"C:\\Users\\Ad33l's\\Desktop\\block mania\\block mania\\res\\tick.wav");

1. Может кто-нибудь сказать мне какой-нибудь способ избежать жесткого кодирования фактического пути к ресурсу, поскольку эти файлы ресурсов не будут присутствовать по этому же точному пути на других компьютерах?

2. Также помогите мне обработать эти файлы ресурсов во время создания отдельной НАСТРОЙКИ (я использую предварительный установщик)

0

Решение

(как актуальный ответ).

Не используйте абсолютный путь, всегда используйте относительный путь; Относительно вашего EXE-файла есть одно решение.

Путь к EXE можно найти с помощью GetModuleFileName.

char appPath[MAXFILENAMELEN];
GetModuleFileName(NULL, appPath, MAXFILENAMELEN);

(приложение) имя appPath вводит в заблуждение, оно содержит полное имя приложения; вам нужно извлечь путь из полного имени приложения.

Мы делаем что-то вроде этого:

(отредактируйте, чтобы сделать его компилируемым в юникоде)

TCHAR applicationPath[MAX_PATH];
GetModuleFileName(NULL, applicationPath, MAX_PATH);
CString sSoundFile(applicationPath);
PathRemoveFileSpec(sSoundFile.GetBuffer());
sSoundFile.ReleaseBuffer();

Оттуда вы можете сделать что-то вроде (псевдокод-иш):

img.Load( appPath + "//Images//db.png" );
0

Другие решения

У вас может быть переменная, которая сохраняет каталог, в который они хотят установить вашу программу. После того, как они выберут каталог, в который они хотят установить его, удалите его. Или вы также можете использовать системные папки, такие как папка appdata

0

Первым решением было бы настроить проект установки для установки установочных файлов под DesktopFolder\ блокировать манию \ блокировать манию \ рез. Затем вы можете получить доступ в вашем приложении к текущему пользователю рабочий стол location и добавьте к нему оставшееся исправление местоположения (block mania \ block mania \ res).

Другим решением будет настройка проекта установки для создания реестров во время установки, в которых будут храниться пути к установочным файлам. Затем ваше приложение может прочитать пути установки из реестра.

Наконец, вы можете также создать во время установки переменные среды, содержащие пути к файлу установки, а затем использовать в своем приложении переменные среды для доступа к расположению установленных файлов.

0
По вопросам рекламы [email protected]