Icono en Allegro

Iniciado por cisco.quijadac, 31 Agosto 2017, 17:22 PM

0 Miembros y 1 Visitante están viendo este tema.

cisco.quijadac

Hola  :D
Pueden ayudarme, estoy haciendo un pequeño juego con Allegro 4.2.2 en Code::Bloks 16.01 y quisiera añadirle un icono para personalizarlo un poco mas.
Estuve buscando por Internet y encontré que añadiéndole un archivo de recurso al proyecto se podía hacer, pero solo logre q el ejecutable (archivo.exe) y la terminal tuvieran el Icono, pero la ventana de Allegro No!.

Tambien encontré que utilizando windows.h podía añadirle el icono a la ventana. Pero sucede que no se puede cargar windows.h y allegro al mismo tiempo, porque chocan. Entonces encontre aqui http://libreallegro.blogspot.com/ que debia cargar winalleg.h como remplazo al windows.h, aunque no manejo muy bien la API de Windows, segui buscando y encontre en los siguientes enlaces como hacerlo pero esto no me resulta en allegro
http://winprog.org/tutorial/es/resources.html
http://winprog.org/tutorial/es/menus.html

Si uso esto me dice error: 'hInstance' was not declared in this scope
Código (cpp) [Seleccionar]
HICON hMyIcon = LoadIcon(hInstance, MAKEINTRESOURCE(MAINICON));

Si alguien puede ayudarme se lo agradecería

Game.cpp
Código (cpp) [Seleccionar]

#include<allegro.h>
#include<winalleg.h>

#define V_Ancho 800
#define V_Alto 600

BITMAP *buffer;

int main() {
    allegro_init();
    install_keyboard();
    install_mouse();
    set_color_depth(32);
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,V_Ancho,V_Alto,0,0);
    show_mouse(screen);
   
    buffer = create_bitmap(V_Ancho,V_Alto);
    buffer = load_bitmap("background.bmp",0);

    blit(buffer,screen,0,0,0,0,V_Ancho,V_Alto);

while(!key[KEY_ESC]){
    readkey;
    }

    destroy_bitmap(buffer);

    return 0;
}
END_OF_MAIN();


resource.rc
Código (cpp) [Seleccionar]
#ifndef _resource_rc
#define _resource_rc

MAINICON    ICON    "ICON 32x32.ico"

#endif // _resource_rc


En el siguiente enlace dejo el proyecto, posiacaso lo necesitan para hacer algunas pruebas
https://goo.gl/qcRcMM

vangodp

para que el codeblocks gener el icon debes seguir esos pasos.

1º Tener el archivo windres correctamente configurado.

Está dentro de la carpeta bin de sú compilador, junto a g++.exe por ejemplo.

2º Suponiendo que tienes un icon llamado saitama.ico, en la carpeta del proyecto queda así:

Como puedes ver el archivo resource.rc está junto.

3º En el rc tengo eso:


4º Compilar

5º traz compilar, dependiendo de si has usado debug o release, salirá uma carpeta nueva junto al icono do proyecto, en mi caso debug.


6º ¡Listo! Como se puede ver la imaje está en el exe:


Dejo la carpeta del proyecto para que des una mirada: http://www.clubedohardware.com.br/applications/core/interface/file/attachment.php?id=141814

Espero que sirva.

cisco.quijadac

Gracias, pero eso ya lo intente

CitarEstuve buscando por Internet y encontré que añadiéndole un archivo de recurso al proyecto se podía hacer, pero solo logre q el ejecutable (archivo.exe) y la terminal tuvieran el Icono, pero la ventana de Allegro No!.

En internet encontre que con Allegro 5 si se puede utilizando el comando
al_set_display_icon(your_display, icon);  

Código (cpp) [Seleccionar]

#include <iostream>
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>

int main () {

al_init();
al_init_image_addon();

ALLEGRO_DISPLAY *display = al_create_display(800,600);
ALLEGRO_BITMAP  *icon    = al_load_bitmap   ("icon.png");

al_set_display_icon(display, icon);
   
al_rest(3);

al_destroy_bitmap(icon);
al_destroy_display(display);
return 0;
}