Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > Форум Форум программистов > Форум C++ > Форум Visual C++
Восстановить пароль Регистрация

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

Может с app.rc надо сделать какуе то штуку чтоб получился app.resource ?
подскажите кто чем может.
18.05.2009, 18:25
AdAgent
Объявления
18.05.2009, 19:36   #2
Шерсть-На-Носу
Форумчанин
Регистрация: 30.01.2009
Сообщений: 168
Репутация: 40 (39)
Лучшие ответы: 3
Код C++
1
2
CBitmap bitmap;
bitmap.LoadBitmap(ID_YOU_PICTURE);
Другие темы раздела
fatal error C1004: unexpected end of file found Visual C++
// Pol.cpp : Defines the entry point for the console application. // //#include "stdafx.h" #include <iostream.h> #include <math.h> double ax, ay; double bx, by; double cx, cy;
Visual C++ Двусвязный линейный список в С++
Как представить длинное число(например 145689) в виде двусвязного линейного списка. Чет не могу понять как может код выглядить в С++?
18.05.2009, 19:36  [ТС]   #3
reg_edit
Новичок
Регистрация: 02.04.2009
Сообщений: 7
Репутация: 0 (0)
фух... разобрался сам.... вообщем если вдруг, кому то надо то вот список шаг к использованию ресурсов:
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 файлами у меня не получилось.
14.07.2010, 06:46   #4
Anka_gel
Новичок
Регистрация: 13.07.2010
Сообщений: 45
Репутация: 3 (3)
Цитата Сообщение от reg_edit Посмотреть сообщение
3. запускаете утилиту ResGen (она в каталогах Визуал Студио валяется) с параметров файл который вы добавили в пункт 1. .....( ResGen.exe app.resx )
после этого создаться фаил с расширением *.resources
Можно ли на этом пункте по подробнее? Непонятно как эту утилитку запустить! Я ее нахожу в каталоге VS, запускаю, а она быстро мигает консолью и тут же исчезает
14.07.2010, 06:46
AdAgent
Объявления
14.07.2010, 08:36   #5
M128K145
Форумчанин
Эксперт C++
Регистрация: 03.07.2009
Сообщений: 10,630
Репутация: 8177 (3399)
Лучшие ответы: 68
Anka_gel, проверьте наличие файла *.resources в каталоге с исходниками
Программа просто запустилась, сгенерировала файл и успешно завершилась
14.07.2010, 08:52   #6
D@rkD@iver
Форумчанин
Регистрация: 01.10.2008
Сообщений: 863
Репутация: 109 (109)
Лучшие ответы: 1
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);
14.07.2010, 09:38   #7
CyBOSSeR
Форумчанин
Эксперт C++
Регистрация: 06.03.2009
Сообщений: 3,676
Репутация: 2260 (1630)
Лучшие ответы: 56
D@rkD@iver, человек на управляемом C++ под .Net пишет, а не на Win32API/MFC.
14.07.2010, 09:50   #8
D@rkD@iver
Форумчанин
Регистрация: 01.10.2008
Сообщений: 863
Репутация: 109 (109)
Лучшие ответы: 1
CyBOSSeR, он хотел через rc файл
я ему показал как, и с чего ты взял что он на .NET пишет?
14.07.2010, 11:23   #9
Anka_gel
Новичок
Регистрация: 13.07.2010
Сообщений: 45
Репутация: 3 (3)
Цитата Сообщение от 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-шник
14.07.2010, 13:44   #10
M128K145
Форумчанин
Эксперт C++
Регистрация: 03.07.2009
Сообщений: 10,630
Репутация: 8177 (3399)
Лучшие ответы: 68
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
и с чего ты взял что он на .NET пишет
Хотя бы по этой строке
Код C++
1
2
ResourceManager ^resourceManager = 
    gcnew ResourceManager("ХХХ.УУУ", Assembly::GetExecutingAssembly() );
14.07.2010, 13:44
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Visual C++ Как подключить Boost к Visual Studio 2008
Здравствуйте, подскажите пожалуйста как подключить boost к Visual Studio 2008. Хочу использовать его многопоточность в консольном приложении, а как подключить не могу найти. Все инструкции сводятся к: 1. скачайте архив с Boost и распакуйте его 2. подключите к Visual Studio и используйте ...
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 сервером. Я хочу чтобы при отладке приложений в Visual Studio они работали не с 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
C# ADO.NET Невозможно подключить базу данных в visual studio 2008
Помогите разобраться при добавлении источника данных у меня появляется только только объект а базы данных в окне диалога нет и сервиса тоже нет как мне настроить чтобы в диалоговом окне появлялись базы данных чтобы выбрать нужную??? везде пишут что оно должно появляться может нужно что-то...
C# и базы данных, ADO.NET red3000 14.06.2012 21:41
Опции темы

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

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