Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация
 
reg_edit
Новичок
0 / 0 / 0
Регистрация: 02.04.2009
Сообщений: 7
18.05.2009, 18:25     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #1
Добрый день.
Я совсем не могу понять как использовать ресурсы... я создал через Visual Studio файл с ресурсами (app.rc) и туда накидал картинок.... а как их в коде теперь достать ?
я пробывл через ResourceManager, но никак не пойму что ему давать в параметры, пробывал по всякому.

Может с app.rc надо сделать какуе то штуку чтоб получился app.resource ?
подскажите кто чем может.
AdAgent
Объявления
18.05.2009, 18:25    Как подключить ресурс (картинку) в Visual Studio 2008 c++?
Шерсть-На-Носу
Форумчанин
40 / 39 / 3
Регистрация: 30.01.2009
Сообщений: 168
18.05.2009, 19:36     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #2
Код C++
1
2
CBitmap bitmap;
bitmap.LoadBitmap(ID_YOU_PICTURE);
reg_edit
Новичок
0 / 0 / 0
Регистрация: 02.04.2009
Сообщений: 7
18.05.2009, 19:36  [ТС]     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #3
фух... разобрался сам.... вообщем если вдруг, кому то надо то вот список шаг к использованию ресурсов:
1. создаёте фаил *.resx ( через add new item)
2. запихиваете в него картинки которые нужны и компилируете этот фаил (правый клик мыши на него в инспекторе Solution )
3. запускаете утилиту ResGen (она в каталогах Визуал Студио валяется) с параметров файл который вы добавили в пункт 1. .....( ResGen.exe app.resx )
после этого создаться фаил с расширением *.resources
4. и далее уже в коде
ResourceManager ^resourceManager = gcnew ResourceManager(
"ХХХ.УУУ", Assembly::GetExecutingAssembly() );
где ХХХ это имя главного именного пространства, а УУУ это имя файла (без расширения) созданного на этапе 1.
5. и далее чтоб получить картинку
.... = (Bitmap^)resourceManager->GetObject("ИМЯ_КАРТИНКИ");
имена картинки чувствительны к регистру букв. Их можно задать в файле *.resx при добавление картинки или даже потом.
-----
п.с. может что то делаю лишнее но так работает, а вот с *.rc файлами у меня не получилось.
Anka_gel
Новичок
3 / 3 / 0
Регистрация: 13.07.2010
Сообщений: 45
14.07.2010, 06:46     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #4
Цитата Сообщение от reg_edit Посмотреть сообщение
3. запускаете утилиту ResGen (она в каталогах Визуал Студио валяется) с параметров файл который вы добавили в пункт 1. .....( ResGen.exe app.resx )
после этого создаться фаил с расширением *.resources
Можно ли на этом пункте по подробнее? Непонятно как эту утилитку запустить! Я ее нахожу в каталоге VS, запускаю, а она быстро мигает консолью и тут же исчезает
M128K145
Форумчанин
Эксперт C++
8186 / 3408 / 68
Регистрация: 03.07.2009
Сообщений: 10,632
14.07.2010, 08:36     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #5
Anka_gel, проверьте наличие файла *.resources в каталоге с исходниками
Программа просто запустилась, сгенерировала файл и успешно завершилась
AdAgent
Объявления
14.07.2010, 08:36    Как подключить ресурс (картинку) в Visual Studio 2008 c++?
D@rkD@iver
Форумчанин
109 / 109 / 1
Регистрация: 01.10.2008
Сообщений: 870
14.07.2010, 08:52     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #6
reg_edit, есть более простой метод
1. в конец файла *.rc добавляешь вот это
ID_MYFILE mainfile Project2.exe
ID_MYFILE1 mainfile1 Project1.dll
где Project2.exe и Project1.dll подключаемые файлы
компилируешь
2. в проге пишешь
Код C++
1
2
3
4
5
6
7
8
9
10
11
     
             HRSRC hRes;
             HMODULE hModule;
    HGLOBAL hResData;
    LPVOID lpData;
    DWORD dwSize;
             hModule = GetModuleHandle(NULL);
    hRes = ::FindResource(NULL,  _T("ID_MYFILE1"), _T("mainfile1"));
    hResData = LoadResource(hModule, hRes);
    lpData = LockResource(hResData);   
    dwSize = SizeofResource(hModule, hRes);
и у тебя будт этот файл по адрему lpData у тебя будет лежать этот файл
причем неважно какой

Добавлено через 46 секунд
потом может сохранить его в файл
Код C++
1
2
3
f= fopen("MyFile", "wb");
    fwrite(lpData, dwSize, 1, f);
    fclose(f);
CyBOSSeR
Форумчанин
Эксперт C++
2263 / 1633 / 55
Регистрация: 06.03.2009
Сообщений: 3,676
14.07.2010, 09:38     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #7
D@rkD@iver, человек на управляемом C++ под .Net пишет, а не на Win32API/MFC.
D@rkD@iver
Форумчанин
109 / 109 / 1
Регистрация: 01.10.2008
Сообщений: 870
14.07.2010, 09:50     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #8
CyBOSSeR, он хотел через rc файл
я ему показал как, и с чего ты взял что он на .NET пишет?
Anka_gel
Новичок
3 / 3 / 0
Регистрация: 13.07.2010
Сообщений: 45
14.07.2010, 11:23     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #9
Цитата Сообщение от M128K145 Посмотреть сообщение
Anka_gel, проверьте наличие файла *.resources в каталоге с исходниками
Программа просто запустилась, сгенерировала файл и успешно завершилась
о, точно!! только название странное такое! значит так: нашла файл *.resources в каталоге
проект\obj\Debug\ ну и само название файла *.resources

вызвала csc.exe, перешла в каталог проекта и выполнила:

csc /t:winexe /r:MySql.Data.dll /out:Proga.exe *.cs /res:res.resources

вроде всё работает! иконка для формы отображается!

M128K145 спасибо!

Добавлено через 5 минут
а еще мне очень помог вот этот пост! http://www.cyberforum.ru/windows-for...tml#post381925

Добавлено через 36 минут
А еще вопрос! Захожу в свойства проекта, хочу указать иконку для программы! Можно ли как-то указать ссылку на тот же, созданный мною выше, файл res.resources? пока у меня получается только сделать так, чтобы ссылка была непосредственно на файлик icon.ico, расположенный в том же каталоге, что и exe-шник
M128K145
Форумчанин
Эксперт C++
8186 / 3408 / 68
Регистрация: 03.07.2009
Сообщений: 10,632
14.07.2010, 13:44     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #10
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
и с чего ты взял что он на .NET пишет
Хотя бы по этой строке
Код C++
1
2
ResourceManager ^resourceManager = 
    gcnew ResourceManager("ХХХ.УУУ", Assembly::GetExecutingAssembly() );
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2010, 12:45    Как подключить ресурс (картинку) в Visual Studio 2008 c++?

Еще ссылки по теме:

Visual C++ Как в Visual Studio 2008 подключить библиотеку pthread.h?

Visual C++ Как подключить Boost к Visual Studio 2008

Visual C++ БД БД в SQL SERVER 2008 и Visual Studio 2008

Visual C++ Как обработать в MFC visual studio 2008 обработку нажатых клавиш?

Anka_gel
Новичок
3 / 3 / 0
Регистрация: 13.07.2010
Сообщений: 45
22.07.2010, 12:45     Как подключить ресурс (картинку) в Visual Studio 2008 c++?   #11
Цитата Сообщение от Anka_gel Посмотреть сообщение
А еще вопрос! Захожу в свойства проекта, хочу указать иконку для программы! Можно ли как-то указать ссылку на тот же, созданный мною выше, файл res.resources? пока у меня получается только сделать так, чтобы ссылка была непосредственно на файлик icon.ico, расположенный в том же каталоге, что и exe-шник
Никто не поможет?
Yandex
Объявления
22.07.2010, 12:45    Как подключить ресурс (картинку) в Visual Studio 2008 c++?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему
Опции темы

Текущее время: 20:00. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.