Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
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
Шерсть-На-Носу
Форумчанин
40 / 39 / 3
Регистрация: 30.01.2009
Сообщений: 168
18.05.2009, 19:36
  #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  [ТС]
  #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
  #4
Цитата Сообщение от reg_edit Посмотреть сообщение
3. запускаете утилиту ResGen (она в каталогах Визуал Студио валяется) с параметров файл который вы добавили в пункт 1. .....( ResGen.exe app.resx )
после этого создаться фаил с расширением *.resources
Можно ли на этом пункте по подробнее? Непонятно как эту утилитку запустить! Я ее нахожу в каталоге VS, запускаю, а она быстро мигает консолью и тут же исчезает
M128K145
Форумчанин
Эксперт C++
8181 / 3403 / 68
Регистрация: 03.07.2009
Сообщений: 10,631
14.07.2010, 08:36
  #5
Anka_gel, проверьте наличие файла *.resources в каталоге с исходниками
Программа просто запустилась, сгенерировала файл и успешно завершилась
D@rkD@iver
Форумчанин
109 / 109 / 1
Регистрация: 01.10.2008
Сообщений: 867
14.07.2010, 08:52
  #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
  #7
D@rkD@iver, человек на управляемом C++ под .Net пишет, а не на Win32API/MFC.
D@rkD@iver
Форумчанин
109 / 109 / 1
Регистрация: 01.10.2008
Сообщений: 867
14.07.2010, 09:50
  #8
CyBOSSeR, он хотел через rc файл
я ему показал как, и с чего ты взял что он на .NET пишет?
Anka_gel
Новичок
3 / 3 / 0
Регистрация: 13.07.2010
Сообщений: 45
14.07.2010, 11:23
  #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++
8181 / 3403 / 68
Регистрация: 03.07.2009
Сообщений: 10,631
14.07.2010, 13:44
  #10
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
и с чего ты взял что он на .NET пишет
Хотя бы по этой строке
Код C++
1
2
ResourceManager ^resourceManager = 
    gcnew ResourceManager("ХХХ.УУУ", Assembly::GetExecutingAssembly() );
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-шник
Никто не поможет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Visual C++ Как подключить Boost к Visual Studio 2008
Здравствуйте, подскажите пожалуйста как подключить boost к Visual Studio 2008. Хочу использовать его многопоточность в консольном приложении, а как подключить не могу найти. Все инструкции...
Visual C++ skident 06.07.2013 18:35
SQL Server Как подключить MS SQL Server 2008 R2 к Visual Studio 2010
Подскажите, пожалуйста как подключить MS SQL Server 2008 R2 к Visual Studio 2010. У меня на локальном компьютере есть MS SQL Server 2008 R2 и Visual Studio 2010 с вмонтированным express сервером. Я...
Microsoft SQL Server Анастасия Л 13.03.2013 02:08
Visual C++ Как в Visual Studio 2008 подключить библиотеку pthread.h?
Подскажите как подключить библиотеку pthread.h в Visual Studio 2008?
Visual C++ OlegOl 31.01.2013 14:04
Visual C++ Отличие сборок Visual Studio 2008 от Visual Studio 2010
Здравствуйте, товарищи! Пытаюсь собрать библиотеку libvbucket, используя Visual Studio 2008. Проблема в том, что библиотека собирается нормально, но при запуске утилиты из комплекта вылезает...
Visual C++ Haster 17.09.2012 16:25
C# ADO.NET Невозможно подключить базу данных в visual studio 2008
Помогите разобраться при добавлении источника данных у меня появляется только только объект а базы данных в окне диалога нет и сервиса тоже нет как мне настроить чтобы в диалоговом окне появлялись...
C# и базы данных, ADO.NET red3000 14.06.2012 21:41
Visual C++ visual studio 2008 что и как
Пытаюсь перейти на VS2008 аж с VS6.0 1998 года. Кто пользовался, помогите разобраться Куда делась кнопка Compile ? жамкаю Build - в строке CMainWin::CMainWin(){ Create(0, lpszTitleName,...
Visual C++ FOLKEN 27.12.2011 11:11
Visual C++ Visual Studio 2008 как в лесу
я не особо сильно в этом шарю, хотел бы спросить, может кто и знает? как в этом детище от микрософта к кнопке привязать ссылку ?? есть форма веб браузера, есть кнопка, так вот как сделать чтобы при...
Visual C++ Fartun 02.08.2010 16:33
Опции темы

Текущее время: 17:58. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.