С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Studio
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/39: Рейтинг темы: голосов - 39, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 33
1
VS 2019

Visual Studio не видит .bmp

12.10.2019, 22:47. Показов 7541. Ответов 24

Author24 — интернет-сервис помощи студентам
Уже Довольно сильно подгорело от поисков решения этой проблемы. Может тут кто поможет?
Visual Studio 2019 не видит файлы картинок на диске.
Нажимаю правой кнопкой на Resource Files > Добавить > Ресурс...
Выбираю Bitmap, потом Импорт..., перехожу в папку с нужным изображением в формате .bmp, а он не видит его
Кликните здесь для просмотра всего текста
Visual Studio не видит .bmp
Visual Studio не видит .bmp
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2019, 22:47
Ответы с готовыми решениями:

Visual Studio 2013 не видит Framework 4.0
У меня стоит visual studio 2013 professional. А для создания проекта C++ мне необходима платформа 4...

Visual Studio не видит библиотеку Npgsql
Добрый вечер, форумчане. Возникла надобность использовать Npgsql в Visual Studio 2017, скачал и...

Visual Studio 2010 не видит Framework 4.5
я установил framework 4.5, но когда запускаю свою студию 2010, то в окне с выбором нового проекта,...

Visual Studio C++ не видит .NET Framework 3.5
Почему visual studio (несколько версий было, одна и та же проблема) не видит net framework выше...

24
фрилансер
5846 / 5375 / 1103
Регистрация: 11.10.2019
Сообщений: 14,366
12.10.2019, 23:24 2
vlad697704, может, права доступа к папке ? Студию запусти от имени администратора, увидит файл или нет ?
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 33
12.10.2019, 23:35  [ТС] 3
Доступ полный, visual запущен от администратора. При выборе "все форматы файлов"(на 2м скрине) видно же его
0
0 / 0 / 0
Регистрация: 09.10.2017
Сообщений: 33
13.10.2019, 12:52  [ТС] 4
Походу никто не сталкивался с этим..
0
Администратор
Эксперт .NET
17696 / 13823 / 5313
Регистрация: 17.03.2014
Сообщений: 28,340
Записей в блоге: 1
13.10.2019, 23:29 5
vlad697704, может у файла расширение не bmp, а скажем bmр (с русской р)?
0
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
16.02.2020, 22:43 6
У меня такая же история. Картинки bmp не отображает при попытке добавления ресурса.
Продолжаю поиски решения проблемы. если найду, напишу здесь.
VS2019 64 bit на Windows 10 64 bit
Проект пытаюсь создать DLL Debug х64

Картинка Индексированные цвета.
0
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
18.02.2020, 09:24 7
Добавлю, что вариант студии:
Microsoft Visual Studio Community 2019
Версия 16.4.5
Бесплатная, зарегистрированная.

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

Если кто пояснит, буду благодарен. Если не сможет, то это для информации.
0
Администратор
Эксперт .NET
17696 / 13823 / 5313
Регистрация: 17.03.2014
Сообщений: 28,340
Записей в блоге: 1
18.02.2020, 23:22 8
Цитата Сообщение от kotgav Посмотреть сообщение
Не понял, Express и Community - это одно и то же?
Это разные редакции. И Community лучше чем Express.
1
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
19.02.2020, 08:52 9
Спасибо!
Но непонятно всё же, почему же не подключается bmp?
Не могли же в Community полностью отключить эту функцию.
0
114 / 82 / 37
Регистрация: 15.02.2020
Сообщений: 206
20.02.2020, 10:09 10
kotgav, а в свойствах файла случаем нет галочки "скрытый"?
1
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
20.02.2020, 11:06 11
Bampo, если речь о файле ресурса bmp, то галочки нет, всё нормально.
Вчера получил от Майкрософт ответ на моё обращение по этому глюку. Любезно сообщили, что передано в соответствующую техническую группу для решения этой проблемы.

В том, что это глюк VS2019 Community, всё больше перевожу предположение в убеждение.
Так, в проекте с WinAPI картинку bmp удалось вывести в окно. Но с одним условием.
При подключении ресурса bmp редактор ресурсов файлов не видит, как написал в первом сообщении vlad697704.
Если включить видимость всех форматов и из него выделить нужный bmp файл, то ресурс подключается.
Если указать в функции вывода картинки идентификатор ресурса, например: IDB_BITMAP1, как показано в строчке ниже (закомментирована), то картинка в окно не выводится. При этом никаких оповещений и сообщений не появляется.
Если же вместо идентификатора указать соответствующий номер ресурса 101, как показано во второй строчке, то картинка
в окно выводится и программа работает надёжно:

C++
1
2
3
case WM_CREATE:
//      if ((hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1))) == NULL)
      if (hBitmap = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCEW(101)))
Таким образом, это правило можно взять на вооружение, как временную меру до решения проблемы Майкрософтом.
0
фрилансер
5846 / 5375 / 1103
Регистрация: 11.10.2019
Сообщений: 14,366
20.02.2020, 11:29 12
вот так тогда тоже должно сработать (не нужно будет вручную циферку перебивать)
C++
1
2
WORD id=IDB_BITMAP1;
if (hBitmap = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCEW(id)))
--------

кстати, вопрос - проект юникодный или однобайтовый ? Уточни, что именно сработает:

if ((hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCEA(IDB_BITMAP1))) == NULL)
if ((hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCEW(IDB_BITMAP1))) == NULL)

?

хотя, макрос без W и A на конце должен сам автоматически раскрываться в нужный согласно определению макроса UNICODE
1
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
20.02.2020, 12:27 13
Алексей1153, спасибо, проверю!
Кодировку пробовал и Юникод, и многобайтовую. Про однобайтовый не в курсе. Файлов bmp не видит и так, и так.
Единственное, что не проверял - платформу проекта Win32. Все рассуждения и опыты в платформе Debud х64.

Добавлено через 23 минуты
Цитата Сообщение от Алексей1153 Посмотреть сообщение
кстати, вопрос - проект юникодный или однобайтовый ? Уточни, что именно сработает:

if ((hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCEA(IDB_BITMAP1))) == NULL)
if ((hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCEW(IDB_BITMAP1))) == NULL)
Проверил, результаты такие.
1. Картинка не появляется в обоих вариантах.
Первый вариант показывает ошибку строк в юникоде, ошибка исчезает в многобайтной кодировке.
Второй вариант наоборот, в юникоде.

2. По идентификатору
C++
1
2
WORD id=IDB_BITMAP1;
if (hBitmap = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCEW(id)))
Неудача. Думаю потому, что ресурс с идентификатором не подключается, поэтому и сообщает, что IDB_BITMAP1 не определён.

Вывод - остаётся пока мой вариант с цифровым номером ресурса. Он работает.
0
фрилансер
5846 / 5375 / 1103
Регистрация: 11.10.2019
Сообщений: 14,366
20.02.2020, 12:37 14
Цитата Сообщение от kotgav Посмотреть сообщение
поэтому и сообщает, что IDB_BITMAP1 не определён.
на этапе компиляции сообщает? Или при выполнении?
0
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
20.02.2020, 14:02 15
Нет, сразу в редакторе VS. Т.е. я только помещаю в файл .cpp
WORD id=IDB_BITMAP1;

и тут же красное подчеркивание. Подвожу курсор и читаю, что IDB_BITMAP1 не определён.
0
фрилансер
5846 / 5375 / 1103
Регистрация: 11.10.2019
Сообщений: 14,366
20.02.2020, 14:11 16
должно помочь
C++
1
#include "resource.h"
1
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
20.02.2020, 14:48 17
О, спасибо, Алексей!
Помогло! А я не додумался заголовочный файл ресурсов в файл cpp подключить.

Добавлено через 18 минут
И даже со строчным идентификатором работает, это хорошо!

Работающие варианты, картинка в окно выводится:

C++
1
2
if ((hBitmap = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCEW(id))) == NULL)
if ((hBitmap = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDB_BITMAP1))) == NULL)

А вот так не работает. Точнее окно создаётся, но пустое, картинка в него не загружается.

C++
1
if ((hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1))) == NULL)
0
фрилансер
5846 / 5375 / 1103
Регистрация: 11.10.2019
Сообщений: 14,366
20.02.2020, 14:53 18
Цитата Сообщение от kotgav Посмотреть сообщение
А вот так не работает.
значит, проект однобайтовый? И, получается, макрос MAKEINTRESOURCEA не работает, как положено

Ну, можно тогда явно пользоваться W-версией и не заморачиваться
1
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
20.02.2020, 16:05 19
Что я и делаю! Спасибо!
0
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
12.03.2020, 13:29 20
Для информации по этой проблеме.

Майкрософт поблагодарил за моё обращение и описание проблемы и посоветовал следить за обновлениями.
Сегодня установил последнее обновление для VS2019, версия 16.4.6.
К сожалению, проблема с ресурсами не устранена.
Даже если я создаю предварительно файл .rc, как написано в документации, а затем пытаюсь подключить ресурс bmp через Импорт, файлы формата bmp программа не видит. Файлы доступны только при включении формата All files или прописыванием их вручную.

0
12.03.2020, 13:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2020, 13:29
Помогаю со студенческими работами здесь

DLL в GAC'е есть, а Visual Studio её не видит.
Ситуация такая. Есть у меня одна DLL (стороннего разработчика), которую я использую в другой DLL. И...

Visual Studio не видит тип и не предлагает варианты после точки
Здравствуйте! Столкнулся с проблемой: Студия не видит тип, т.е. когда я пишу название класса в...

Как удалить Visual Studio 2019 Community со всеми рабочими нагрузками если VS Installer ее не видит?
Установил вчера Visual Studio 2019 на диск D, с нагрузками .NET, .NET Core и разработка мобильных...

Скажите если я напишу программу на C# в MS Visual studio 2012 на framework 3.5 я потом смогу открыть проект моей программы на MS Visual studio 2008
Скажите если я напишу программу на C# в MS Visual studio 2012 на framework 3.5 я потом смогу...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru