Как добавить значок в приложение, построенное с помощью Eclipse Galileo C и MinGW?

Я много читал о том, как добавить значок в приложение, созданное с помощью Visual Studio, но я понятия не имею, как это сделать с Eclipse Galileo / C / MinGW.

Может ли кто-нибудь написать описание или дать мне ссылку на описание?

В Windows значки, а также некоторые другие элементы (курсоры, растровые изображения, …) должны быть указаны в файле ресурсов, который после компиляции будет связан с программой.

Сначала рассмотрим пример добавления значка в программу Windows, которая иллюстрирует ее использование в Eclipse. Вот простая программа, которая просто создает окно, посмотрите на время, когда мы заполняем WNDCLASSEX, там ссылается значок приложения:

resources.h – этот файл может использоваться для назначения значения идентификатору ресурса, поэтому используйте значение:

#define AppIcon 101 

Следующий файл – это файл ресурсов, его можно создать вручную или из Eclipse, чтобы создать его в Eclipse, щелкните правой кнопкой мыши каталог, который вы хотите (в этом случае src ), и выберите « New -> File . Там напишите нужное имя и нажмите « Finish . Чтобы отредактировать его из Eclipse, щелкните его правой кнопкой мыши и выберите « Open with -> Text Editor .

resources.rc – здесь будет указан значок:

 #include "resources.h" // The icon path I used will be needed by Eclipse. // If you want to use back-slashes you have to scape them (\\ instead of \): AppIcon ICON "../src/icon.ico" 

demoicon.c – файл, содержащий код программы:

 #include  #include "resources.h" const char *ClassName = "DemoIcon"; // Declaration of the window procedure, to be used in the WNDCLASSEX struct: LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd) { WNDCLASSEX wc; HWND hWnd; MSG msg; // Filling the structure: wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WindowProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; // Remember this just loads 32x32, use LoadImage() instead for other dimensions (16x16, 48x48, ...): wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(AppIcon)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); wc.lpszMenuName = NULL; wc.lpszClassName = ClassName; // Here we'll use LoadImage, as we need a 16x16 mini icon: wc.hIconSm = LoadImage(hInstance,MAKEINTRESOURCE(AppIcon),IMAGE_ICON,16,16, LR_DEFAULTCOLOR); // Registering the class: if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Could not register window.", "Error", MB_ICONEXCLAMATION | MB_OK); return -1; } // Create the window using the "MainWindow" class: hWnd = CreateWindowEx(WS_EX_WINDOWEDGE, ClassName, "Demo Icon", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 200, 150, NULL, NULL, hInstance, NULL); // If the window was not created show error and exit: if(hWnd == NULL) { MessageBox(NULL, "Could not create window.", "Error", MB_ICONEXCLAMATION | MB_OK); return -1; } // Set the windows show state, to show it: ShowWindow(hWnd, nShowCmd); // Draw the window: UpdateWindow(hWnd); // Retrieve messages from the message queue: while(GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } // Implementation of the window procedure, will handle the messages: LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } 

Теперь в исходном каталоге проекта Eclipse убедитесь, что у вас есть все файлы (в примере 3 файла, упомянутые ранее, и файл значка).

После этого перейдите в Project -> Properties .
Перейдите на вкладку C/C++ Build -> Settings -> Build Steps .
Там вы увидите Pre-build steps -> Command . Команда, которую вы заполните, будет выполнена до начала компиляции, поэтому вы скажете ей скомпилировать файл ресурсов. Поскольку вы используете MinGW, компилятор ресурсов – windres :

 windres ../src/resources.rc -o ../Resources/resources.o 

Как вы можете видеть, я буду размещать файл скомпилированных ресурсов в каталоге « Resources , вы можете оставить его там, где хотите (и, следовательно, имя файла, его не нужно называть resources.rc ).

Перейдите на вкладку « Tool Settings ».
Там перейдите в MinGW C Linker -> Miscellaneous , а в других объектах добавьте ранее созданный объектный файл, в этом случае вы должны добавить:

 Resources/resources.o 

Поскольку это приложение Windows, добавьте параметр -mwindows в флаги компоновщика вверху той же вкладки.

Сделано, при создании проекта Eclipse сначала скомпилирует файл ресурсов, а затем свяжет сгенерированный объект как с любым другим объектным файлом вашего проекта.

Надеюсь, это достаточно ясно, чтобы прочитать это.

Eclipse не предназначен для просмотра файлов ресурсов. BUG. Поэтому у них также есть шаги, чтобы добавить его в обработку. Вот шаги на июнь. [Http://wiki.eclipse.org/CDT/User/FAQ#How_to_handle_Resource-Script-Files_.27.2A.rc.27_with_CDT.3F][1]

Как обращаться с ресурсами-Script-Files ‘* .rc’ с CDT? В настоящее время обработка Windres.exe с CDT невозможна. Вы не можете добавить файл .rc в проект, который будет скомпилирован и связан с автоматически. Это уже вызвано ошибкой в ​​bugzilla.

Один из способов – создать Pre-Build Step. Под меню Проект | Недвижимость | C / C ++ – Build | Настройки | Шаги сборки | Шаги Pre-Build заполняют командную строку: windres –use-temp-file -i .. \ MyProject.rc -o .. \ MyProject_rc \ MyProject_rc.o Сделать объект известным компоновщику. Под меню Проект | Недвижимость | C / C ++ – Build | Настройки Настройки инструмента | MinGW C ++ Linker | Разное | Другие объекты щелкните по значку «Добавить», заполните строку: «C: \ MyWorkspace \ MyProject \ MyProject_rc \ MyProject_rc.o» «MyWorkspace» и «MyProject» замените все, что подходит для вашей цели.

Перед созданием вы должны добавить папку. \ MyProject_rc.

Путь к windres.exe должен быть известен как затмение.

То, как я это делал, было создание файла

icon.rc

 #define AppIcon 101 AppIcon ICON "../icon.ico" 

Затем вызовите windres через командную строку с помощью

 windres my.rc -O coff -o my.res 

Он скомпилирует несколько файлов для вас – сохраните один, который называется icon.res, и переименуйте его как libicon.a . Наконец, включите его в свою программу, добавив его как

Project -> Свойства -> Сборка -> Настройки -> C ++ Linker -> Библиотеки

(убедитесь, что вы указали Eclipse, где найти файл, используя раздел «Библиотечные пути»).

Надеюсь это поможет!

Я сначала закрою все значки, которые я хочу использовать в проекте. Затем переименуйте .zip в .jar

Создайте папку ресурса, если у вас уже нет (я использую «lib»). Затем поместите файл jar в папку ресурса.

Затем одно простое дополнение к свойствам проекта:

щелкнув правой кнопкой мыши и настройте «Путь сборки Java» – выберите вкладку «Библиотеки» . Нажмите кнопку Добавить JARs и добавьте icons.jar в библиотеки – затем сохраните .

Теперь легко выделить нужный значок изображения в редакторе Window Builder, например, когда баннер, содержащий ваши значки, появится в списке выбора режима выбора изображения в списке ресурсов Classpath. Все работает так, как должно и компилируется.

  • Как импортировать проект библиотеки eclipse из github в проект студии Android?
  • Ошибка Eclipse: R не может быть разрешено переменной
  • Объемное пространство с кавычками
  • Как использовать складывание кофейных байтов
  • Android - создание новой активности в Eclipse
  • java.lang.ClassNotFoundException: org.eclipse.core.runtime.adaptor.EclipseStarter
  • Избегание «ресурса не синхронизируется с файловой системой»
  • Фатальный сигнал 11 (SIGSEGV) при 0x00000000 (код = 1) - PhoneGap
  • Как использовать существующую базу данных с Android-приложением
  • Невозможно заставить Project Lombok работать над Eclipse (Helios)
  • Как вы теперь импортируете проект Eclipse в Android Studio?
  • Давайте будем гением компьютера.