С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/48: Рейтинг темы: голосов - 48, средняя оценка - 4.96
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366

Загрузить картинку в ресурсы и использовать ее

28.04.2013, 21:14. Показов 10147. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Извиняюсь за вопросы из разряда для начинающих в C++, но...
Как загрузить картинку в файл ресурсов?
Открываю вкладку ресурсов, в верхней строчке нажимаю правой кнопкой, далее Add->Resource, далее Resource type->bitmap->Import, выбираю картинку с расширением .jpeg, он у меня спрашивает Resource Type... - это что, ведь я только что указал Resource Type - Bitmap. Ну хорошо, ввожу Image, он мне создает папку "Image"
Далее, ставлю на форму элемент CStatic, добавляю Variable->Control и пишу в функции нажатия кнопки:
C++
1
2
3
4
5
6
7
void CPicMFCDlg::OnBnClickedOk()
{
    HBITMAP hbmp = LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDR_IMAGE1));
    m_picture.SetBitmap(hbmp);
 
    OnOK();
}
Программа запускается (диалоговое приложение), я нажимаю на кнопку и она у меня просто пропадает без всяких сообщений об ошибках(естественно, что изображение тоже не грузится).
Если поставить BreakPoint на строку с HBITMAP hbmp, то видно, что hbmp возвращает 0x0000000000, ну фактически NULL, а значит там ошибка.
Как загрузить картинку в ресурсы и отобразить ее в CStatic?
Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.04.2013, 21:14
Ответы с готовыми решениями:

Как программно добавить картинку в ресурсы?
Добрый день. 1) Как программно, добавить картинку в ресурсы и сделать так, что если запускают программу на другом компьютере, изображение...

Как добавить ресурсы(картинку) в CodeBlocks
Ребята, пожалуйста, помогите не могу добавить картинку в opengl(codeblocks)!

Не удалось полностью загрузить в проект все ресурсы библиотеки IronJS
Здравствуйте. Для работы с Ast деревьями , я установил либу IronJS на Visual Studio с помощью пакетного менеджера Nuget , однако...

11
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.04.2013, 21:42
Цитата Сообщение от Xantrax Посмотреть сообщение
картинку с расширением .jpeg, он у меня спрашивает Resource Type...
- jpeg никогда не поддерживался, юзай битмапы

Как при нажатии на баттон подгрузить картинку в picturecontrol

0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
29.04.2013, 10:11  [ТС]
Юра, кстати, эта тема пошла как раз от вот этой вашей темы...
Хорошо, я перевел изображение в формат .bmp (именно это я понял под выражением "юзай битмапы").
Вставил его в ресурсы проекта.
и написал код в кнопке:
C++
1
2
3
4
5
6
void CPicMFCDlg::OnBnClickedOk()
{
    HBITMAP hbmp = LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1));
    m_picture.SetBitmap(hbmp);
    OnOK();
}
Он, не сильно отличается от вашего. Но результат тот же. программа просто пропадает по нажатию кнопки и никаких ошибок...

Добавлено через 29 минут
на всякий случай прикладываю код проекта.

Добавлено через 11 часов 39 минут
Так как все же загрузить картинку в CStatiс?
Вчера я пытался загрузить картинку в CStatic, сегодня я кинул на форму Picture Control, добавил bmp картинку в ресурсы(картинка у меня также лежит в папке с ресурсами), написал такой вот код:
C++
1
2
3
4
5
6
void CPicMFCDlg::OnBnClickedOk()
{
    HBITMAP hbtmp = LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
    m_PictureControl.SetBitmap(hbtmp);
    OnOK();
}
hbtmp, что-то возвращает судя по debug-у, однако картинка не загружается в Picture Control, а приложение автоматически закрывается....
0
29.04.2013, 10:53

Не по теме:

Xantrax, убери из проекта папки релиз/дебуг и файл с расширением ncb если есть папка ipch её тоже загробь, и тогда только заархивируй проект будет 100-150 кБ, качать 10 Мб ненужной инфы мне мой траффик не позволяет

0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
29.04.2013, 11:10  [ТС]
Утренний проект с Picture Control...
Вложения
Тип файла: rar PicMFC.rar (46.9 Кб, 19 просмотров)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
29.04.2013, 11:46
Xantrax, ты думаешь что сделал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void CPicMFCDlg::OnPaint()
{
    //if (IsIconic())
    //{
    //  CPaintDC dc(this); // device context for painting
 
    //  SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
 
    //  // Center icon in client rectangle
    //  int cxIcon = GetSystemMetrics(SM_CXICON);
    //  int cyIcon = GetSystemMetrics(SM_CYICON);
    //  CRect rect;
    //  GetClientRect(&rect);
    //  int x = (rect.Width() - cxIcon + 1) / 2;
    //  int y = (rect.Height() - cyIcon + 1) / 2;
 
    //  // Draw the icon
    //  dc.DrawIcon(x, y, m_hIcon);
    //}
    //else
    //{
    //  CDialog::OnPaint();
    //}
}
, зачем коментил, раскоменть всё
Код не трогал только заменил получение HINSTANCE

C++
1
2
3
4
5
6
7
8
9
10
void CPicMFCDlg::OnBnClickedOk()
{
    HBITMAP hbtmp = LoadBitmap
    (
        GetModuleHandle(NULL),
        MAKEINTRESOURCE(IDB_BITMAP1)
    );
    m_PictureControl.SetBitmap(hbtmp);
   // OnOK();//это виртуальный метод его не надо
}

Не по теме:

PS: Стрела-10 о чём нибудь говорит?:)

Миниатюры
Загрузить картинку в ресурсы и использовать ее  
1
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
29.04.2013, 14:24  [ТС]
Очень интересные факты заключаются в том, что для того чтобы загрузить изображение в Picture Control, кроме кода
C++
1
2
3
4
5
6
7
8
9
10
void CPicMFCDlg::OnBnClickedOk()
{
    HBITMAP hbtmp = LoadBitmap
    (
        GetModuleHandle(NULL),
        MAKEINTRESOURCE(IDB_BITMAP1)
    );
    m_PictureControl.SetBitmap(hbtmp);
    OnOK();
}
нужно совместить два фактора:
1) закомментировать или вообще удалить виртуальную функцию OnOK(), потому что с ней приложение просто вылетает без какой-либо ошибки;
2) в свойстве (Properties) Picture Control -> Type поставить Bitmap, иначе картинка просто не хочет появляться...

Вот с этих двух мелочей (на первый взгляд) я и не знал, впервые открыв проект Юры и начав его рассматривать.

Не по теме:

Xantrax, ты думаешь что сделал
Да, вроде да.
Если приложение свернуто то выводить в панели иконку приложения, если нет, то просто перерисовка...
Я думаю, что ничего нет криминального, если закомментировать всю функцию OnPaint...



Добавлено через 1 час 4 минуты

Не по теме:

Не по теме: PS: Стрела-10 о чём нибудь говорит?
Да говорит.

0
29.04.2013, 14:30

Не по теме:

Цитата Сообщение от Xantrax Посмотреть сообщение
Да говорит.
- это моя ВУС

0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
29.04.2013, 16:28  [ТС]
Научите меня работать с MSDN документацией, а то я задам миллион простейших вопросов. После Qt, MSDN просто жесть...
У Picture Control в свойствах есть свойство Visible, я его ставлю на FALSE, как теперь мне поставить по нажатию кнопки Visible Picture Control-а на TRUE. У переменной связанной с Picture Control есть свойство Visible(TRUE)? Я не вижу такого свойства у этой переменной!((
0
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
29.04.2013, 17:27
Xantrax, MFC, Picture Control - скрытие изображения
1
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
29.04.2013, 22:04  [ТС]
У меня приложение неадекватно ведет себя. Теперь я пытаюсь изменить размер картинки. Пытаюсь воспользоваться функцией SetWindowRgn();
Она требует на вход какой-то HRGN, хорошо я так понимаю это ей нужен объект класса прямоугольной области CRgn.
Создаю эту область и подставляю ф-ции SetWindowRgn();
Приложение начинает себя неадекватно вести. Сначала показывает картинку только в рамка Picture Control-а, при повторном нажатии выводит полностью изображение в неадекватном месте. А кнопка закрыть программу вообще не работает...(((
Вот проект, посмейтесь...
Ушел читать книжки
Вложения
Тип файла: rar PicMFC.rar (321.7 Кб, 5 просмотров)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
29.04.2013, 22:10
Xantrax, размер окна меняют c помощью MoveWindow когда же дело касается битмапов то делают BitBlt на нужный размер (т.е ресайз пикселов). Мое мнение использование SetWindowRgn ведёт в тупик.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2013, 22:10
Помогаю со студенческими работами здесь

Как в dev c++ встроить в ресурсы картинку bmp?
Господа вот так вывожу картинку на экран - #include &lt;windows.h&gt; /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure...

Как добавить картинку в ресурсы Visual Studio
Здравствуйте! Столкнулся с такой проблемой: при написании приложения на с++ с использованием библиотеки wxWidgets, мне понадобилось...

Как запихнуть картинку и wav фаил в ресурсы?
как так вышло что я ни разу в жизни не использовал ресурсы. Соответственно вопросы: 1) Используя их , не надо уже хранить картинку в ...

Как использовать ресурсы
Здравствуйте! Уже давно мучаюсь с ресурсами - не могу разобраться. раньше было так: ...

Использовать английские ресурсы по умолчанию
Доброе утро. Я хотел сделать английский язык в приложении. С поиощью VS и ресурсных файлоа сделал английскую версию всех надписей и строк....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru