Member 13503586 Ответов: 2

Изменение значка моей программы в DEV-C++ (win32 GUI mode)


Я учусь использовать DEV-C++ 5.11, надеясь сделать программу, которую я имею в виду.
Прежде чем я пойду дальше, я хотел бы изменить значок для результирующей программы, но это, похоже, не работает.
Вот что я сделал:
1 - я запускаю новый проект (File - New - Project - Windows Application) и называю его "тест". Это создает общий вид main.cpp файл в нем с функциями WndProc и WinMain.
2 - я компилирую и запускаю, он создает программу (test.exe) который ничего не делает, но работает. 3 - я удаляю файл .exe.
3 - я копирую файл значка (test.ico) в директорию проекта.
4 - я устанавливаю значок в качестве значка проекта. (Project - Project Options - General - Icon - Browse - Type - Win32 GUI)
5 - я компилирую и запускаю снова, полученная программа работает, но все еще показывает этот общий значок (в строке заголовка, на панели задач, в проводнике файлов и селекторе Alt+Tab).
Что я упускаю? Любая помощь будет очень признательна.
P.S. Я работаю на Windows 7, и файл .ico-это допустимый файл значков, который я взял из другой программы и переименовал ради теста.

Что я уже пробовал:

Вот что я сделал:
1 - я запускаю новый проект (File - New - Project - Windows Application) и называю его "тест". Это создает общий вид main.cpp файл в нем с функциями WndProc и WinMain.
2 - я компилирую и запускаю, он создает программу (test.exe) который ничего не делает, но работает. 3 - я удаляю файл .exe.
3 - я копирую файл значка (test.ico) в директорию проекта.
4 - я устанавливаю значок в качестве значка проекта. (Project - Project Options - General - Icon - Browse - Type - Win32 GUI)
5 - я компилирую и запускаю снова, полученная программа работает, но все еще показывает этот общий значок (в строке заголовка, на панели задач, в проводнике файлов и селекторе Alt+Tab).

Kornfeld Eliyahu Peter

У меня нет ответа (никогда даже не слышал о DEV-C++), поэтому я скорее спрошу вас кое о чем: почему DEV-C++? Visual Studio Community Edition не подходит?

Member 13503586

Я попробовал Visual Studio 2017 Community Edition. У него есть хорошая IDE с инструментом для редактирования иконок. Но когда я пытаюсь отредактировать некоторые из них (это не позволяет мне редактировать все размеры), я сохраняю результат, компилирую и запускаю, и результат тот же самый. Значок (маленькая подарочная коробка) остается неизменным в строке заголовка, панели задач, проводнике файлов и селекторе Alt+Tab. Я не понимаю почему. Вы не могли бы мне помочь? Спасибо.

Kornfeld Eliyahu Peter

https://docs.microsoft.com/en-us/visualstudio/ide/how-to-specify-an-application-icon-visual-basic-csharp

Member 13503586

Решение, описанное в этой ссылке, использует либо VisualBasic, либо C#. Я использовал C++ (Windows Desktop Application) при запуске нового проекта, поэтому я попытался открыть новый проект в C# (Windows Universal - Blank App) вместо этого, и теперь он говорит: "выберите целевую и минимальную версии платформы, которые будет поддерживать ваше Универсальное приложение Windows". и он не предлагает мне ничего, кроме различных вариантов Windows 10, поэтому я оставляю это, как это предлагается, а затем он останавливается, говоря, что мне нужно запустить Windows 10. Я не думаю, что мне нужно переходить с 7 на 10, чтобы установить значок для моей программы. Типично Микрософты!

enhzflep

Я не использовал DevCpp уже около 10 лет, перейдя на столь же легкий и эффективный код::Blocks (я использую VS только неохотно для отладки)
Как правило, значок программы изменяется в Редакторе ресурсов, который используется для определения диалоговых окон и включения ресурсов - значок программы-это просто ресурс, используемый ОС..

Member 13503586

Да, но я не могу изменить его с помощью DEV-C++ или VisualStudio, несмотря на то, что эта операция кажется простой в теории. И я знаю, что мой файл значков действителен. Так в чем же дело? Неужели только у меня есть такая проблема? Что же мне делать?

2 Ответов

Рейтинг:
12

Member 13503586

Наконец-то я это понял!
Я заменил следующие две строки

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */

с
wc.hIcon = LoadIcon(hInstance, "A"); 
wc.hIconSm = LoadIcon(hInstance, "A"); 


Рейтинг:
1

Jochen Arndt

В ваши созданные WinMain функция главного окна приложения, как правило, зарегистрированы призвание RegisterClassEx:

WNDCLASSEX wc;
// ...
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wc);
HWND hwnd = CreateWindowEx(...);
IDI_APPLICATION это идентификатор ресурса значка, содержащегося в файле excutable. Этот значок будет показан в строке заголовка окна. Вы можете изменить идентификатор на любой идентификатор значка, присутствующий в исполняемом файле.

Каждый исполняемый файл Windows содержит встроенные ресурсы, такие как значки, строки, шаблоны диалоговых окон, курсоры, сведения о версии. Приложение IDE для Windows создает набор предопределенных идентификаторов и предоставляет соответствующие ресурсы.

В Visual Studio ресурсы организованы в файлы сценариев источника ресурсов (*.дистанционное управление) и один или несколько заголовочных файлов с определениями идентификаторов (ресурса.ч для конкретных идентификаторов проекта). Вы можете использовать редактор ресурсов VS для их изменения или редактирования дистанционное управление файлы с текстовым редактором.

Я не знаю, как Dev-C++ обрабатывает ресурсы, но это должно быть аналогичным образом (быстрое исследование показывает, что он, похоже, использует дистанционное управление файлы сценариев тоже). Вы должны добавить ресурс значка, указав идентификатор и путь к файлу значка, или отредактировать существующий файл сценария ресурса, чтобы изменить путь к файлу значка.

Смотреть также О Файлах Ресурсов (Windows)[^].