¿Cómo agregar un ícono a una aplicación creada con Eclipse Galileo C y MinGW?

He leído mucho sobre cómo agregar un ícono a una aplicación creada con Visual Studio, pero no tengo idea de cómo hacerlo con Eclipse Galileo / C / MinGW.

¿Alguien puede escribir una descripción o darme un enlace para una descripción?

En Windows, los íconos y algunos otros elementos (cursores, mapas de bits, …) deben especificarse en un archivo de recursos, que una vez comstackdo se vinculará al progtwig.

Primero un ejemplo sobre cómo agregar un ícono a un progtwig de Windows que ilustrará su uso dentro de Eclipse. Aquí hay un progtwig simple que solo crea una ventana, mira en el momento en que llenamos el WNDCLASSEX, el ícono de la aplicación se referencia allí:

resources.h : este archivo se puede usar para asignar un valor a un identificador de recurso y, por lo tanto, use el valor en su lugar:

#define AppIcon 101 

El siguiente archivo es el archivo de recursos, puede crearlo manualmente o también desde Eclipse, para crearlo en Eclipse, haga clic con el botón derecho en el directorio que desea que sea (en este caso es src ) y seleccione New -> File . Escriba el nombre que desee y haga clic en Finish . Para editarlo desde Eclipse, haga clic derecho y seleccione Open with -> Text Editor .

resources.rc – el icono se especificará aquí:

 #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 – el archivo que contiene el código del progtwig:

 #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; } 

Ahora, en su directorio de origen de proyecto Eclipse, asegúrese de tener todos los archivos (en el ejemplo, los 3 archivos mencionados anteriormente y el archivo de icono).

Después de eso ve a Project -> Properties .
Ahí, ve a C/C++ Build -> Settings -> Build Steps pestaña C/C++ Build -> Settings -> Build Steps .
Allí verás los Pre-build steps -> Command . El comando que complete se ejecutará antes de que comience la comstackción, por lo que le pedirá que compile el archivo de recursos. Como está utilizando MinGW, el comstackdor de recursos es windres :

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

Como puede ver, ubicaré el archivo de recursos comstackdos en un directorio llamado Resources , puede dejarlo donde desee (y, por lo tanto, el nombre del archivo, no tiene que llamarse resources.rc ).

Ahora ve a la pestaña de Tool Settings la Tool Settings .
Allí, vaya a MinGW C Linker -> Miscellaneous , y en otros objetos agregue el archivo objeto creado anteriormente, en este caso debe agregar:

 Resources/resources.o 

Como esta es una aplicación de Windows, agregue la opción -mwindows a los indicadores del enlazador en la parte superior de la misma pestaña.

Hecho, al construir su proyecto, Eclipse comstackrá primero el archivo de recursos y luego vinculará el objeto generado como cualquier otro archivo objeto de su proyecto.

Espero que sea lo suficientemente claro como para leer esto.

Eclipse no está configurado para mirar los archivos de recursos. ERROR. Entonces también tienen pasos para agregarlo al procesamiento. Estos son los pasos para junio. [http://wiki.eclipse.org/CDT/User/FAQ#How_to_handle_Resource-Script-Files_.27.2A.rc.27_with_CDT.3F][1]

¿Cómo manejar archivos Resource-Script-Files ‘* .rc’ con CDT? Actualmente, el manejo de windres.exe con CDT no es posible. No puede agregar el archivo .rc al proyecto para comstackrlo y vincularlo automáticamente. Esto ya se plantea como un error en bugzilla.

Una forma es crear un paso de preconstrucción. Bajo proyecto Menue | Propiedades | C / C ++ – Construir | Configuración | Construir pasos | Los pasos previos a la comstackción completan la línea de comando: windres –use-temp-file -i .. \ MyProject.rc -o .. \ MyProject_rc \ MyProject_rc.o Haga que el objeto sea conocido por el enlazador. Bajo proyecto Menue | Propiedades | C / C ++ – Construir | Configuración Configuración de la herramienta | MinGW C ++ Linker | Misceláneo | Otros objetos, haga clic en el icono ‘Agregar’, complete la línea: “C: \ MyWorkspace \ MyProject \ MyProject_rc \ MyProject_rc.o” ‘MyWorkspace’ y ‘MyProject’ reemplace con lo que sea apropiado para su propósito.

Tienes que agregar la carpeta. \ MyProject_rc antes de comstackr.

La ruta a windres.exe debe ser conocida por eclipsar.

La forma en que lo hice fue creando un archivo

icon.rc

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

Luego invoque los windres a través del símbolo del sistema con

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

Comstackrá varios archivos para usted: conserve el llamado ícono.res y renómbrelo como libicon.a . Finalmente, inclúyalo en su progtwig agregándolo como una biblioteca debajo

Proyecto -> Propiedades -> Construir -> Configuraciones -> Enlazador C ++ -> Bibliotecas

(asegúrese de decirle a Eclipse dónde encontrar el archivo usando la sección de rutas de la biblioteca debajo).

¡Espero que esto ayude!

Primero, compruebo todos los icons que quiero usar dentro del proyecto. A continuación, cambie el nombre del archivo .zip a .jar

Cree una carpeta de recursos si todavía no tiene una (uso “lib”) Luego coloque el archivo jar dentro de la carpeta de recursos.

Luego, una simple adición a las propiedades del proyecto:

haciendo clic derecho y Configurar “Ruta de comstackción Java” – seleccione la pestaña Bibliotecas . Haga clic en el botón Agregar JAR y agregue icons.jar a las bibliotecas, luego guárdelo .

Ahora es fácil asignar el icono de imagen deseado dentro del editor de Window Builder, por ejemplo, cuando el contenedor que contiene tus íconos aparece dentro del selector de modo de Selección de imagen dentro de la lista de recursos de Classpath. Todo funciona como debería y comstack bien.