Как добавить значок в приложение, созданное с помощью Eclipse Galileo C и MinGW?
Я много читал о том, как добавить значок в приложение, построенное с помощью Visual Studio, но я понятия не имею, как это сделать с Eclipse Galileo / C / MinGW.
может ли кто-нибудь написать описание или дать мне ссылку на описание ?
4 ответов
в Windows, значки, а также некоторые другие элементы (курсоры, рисунки, ...) должны быть указаны в файле ресурсов, который после компиляции будет подключен к программе.
сначала пример того, как добавить значок в программу Windows, которая проиллюстрирует его использование в Eclipse. Вот простая программа, которая просто создает окно, посмотрите, когда мы заполняем WNDCLASSEX, значок приложения ссылается там:
ресурсы.h - этот файл может быть использован для присвоения значения идентификатору ресурса, и поэтому вместо этого используйте значение:
#define AppIcon 101
следующий файл-это файл ресурсов, вы можете создать его вручную или из Eclipse, а также, чтобы создать его в Eclipse, щелкните правой кнопкой мыши каталог, который вы хотите, чтобы он был (в этом случае src
) и выберите New -> File
. Там напишите нужное имя и нажмите Finish
. Чтобы отредактировать его из Eclipse, щелкните его правой кнопкой мыши и выберите Open with -> Text Editor
.
ресурсы.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 <windows.h>
#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
tab.
Там вы увидите Pre-build steps -> Command
. Этот команда, которую вы заполните, будет выполнена до начала компиляции, поэтому вы скажете ей скомпилировать файл ресурсов. Как вы используете MinGW компилятор ресурсов windres
:
windres ../src/resources.rc -o ../Resources/resources.o
как вы можете видеть я буду устанавливать скомпилированный файл ресурсов в папке Resources
, вы можете оставить его там, где хотите (и поэтому имя файла, оно не должно быть названо resources.rc
).
теперь перейти к Tool Settings
tab.
Вот, иди в MinGW C Linker -> Miscellaneous
, и другими объекты добавьте созданный ранее объектный файл, в этом случае необходимо добавить:
Resources/resources.o
поскольку это приложение для Windows, добавьте опцию -mwindows
флаги компоновщика в верхней части той же вкладке.
готово, при создании проекта Eclipse сначала скомпилирует файл ресурсов, а затем свяжет сгенерированный объект как любой другой объектный файл вашего проекта.
я надеюсь, это достаточно ясно, чтобы прочитать это.
Eclipse не настроен на просмотр файлов ресурсов. ЖУК. Таким образом, у них также есть шаги, чтобы добавить его в обработку. Вот шаги на июнь. [http://wiki.eclipse.org/CDT/User/FAQ#How_to_handle_Resource-Script-Files_.27.2A.rc.27_with_CDT.3F][1]
как обращаться с ресурсом-скриптом-файлами'*.rc ' с CDT? В настоящее время обработка windres.exe с CDT невозможно. Вы не можете добавить .rc-файл для проекта, который будет скомпилирован и связан автоматически. Это уже поднято как ошибка в bugzilla.
один из способов-создать шаг предварительной сборки. Под меню Проект / Свойства | C / C++ - Сборка | Настройки / Шаги Сборки | Шаги Предварительной Сборки заполните командную строку: windres --use-temp-file-i..\Myproject будет.rc-o..\MyProject_rc\MyProject_rc.о Сделайте объект известным компоновщику. Под меню Проект / Свойства | C / C++ - Сборка / Настройки Настройки Инструмента | Компоновщик MinGW C++ / Разное | Другие Объекты нажмите на значок "Добавить", заполните линия: "C:\MyWorkspace\MyProject\MyProject_rc\MyProject_rc.о" "MyWorkspace" и "MyProject" заменить на то, что подходит для вашей цели.
вы должны добавить папку .\MyProject_rc, прежде чем строить.
путь к windres.exe должен быть известен eclipse.
то, как я это сделал, было путем создания файла
.rc
#define AppIcon 101
AppIcon ICON "../icon.ico"
затем вызвать windres через командную строку с
windres my.rc -O coff -o my.res
он скомпилирует несколько файлов для вас -- держите тот, который называется .res и переименуйте его как libicon.а. Наконец, включите его в свою программу, добавив его в качестве библиотеки в
Проект - > Свойства - > Сборка - > Настройки - > Компоновщик C++ - > Библиотеки
(убедитесь, что вы сказали Eclipse, где найти файл, используя раздел пути к библиотеке ниже).
надеюсь, что это помогает!
Я сначала застегиваю все значки, которые хочу использовать в проекте. Затем переименовать the .zip to a .Джар
создайте папку ресурсов, если у вас ее еще нет (я использую " lib") Затем поместите файл jar в папку ресурсов.
затем одно простое дополнение к свойствам проекта:
щелкнув правой кнопкой мыши и настроив "путь сборки Java" - выберите библиотеки. Нажмите на Добавить Банки кнопка и добавить иконы.банку в библиотеки-тогда сохранить.
теперь его легко выделить нужный значок изображения внутри редактор конструктора окон например, как jar, содержащий ваши значки, появляется в окне выбора режима выбора изображения в списке ресурсов Classpath. Все работает так, как должно, и прекрасно компилируется.