Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: cisco.quijadac en 31 Agosto 2017, 17:22 PM

Título: Icono en Allegro
Publicado por: cisco.quijadac en 31 Agosto 2017, 17:22 PM
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!.
[youtube=320,180]https://www.youtube.com/watch?v=La-AyEqlUik[/youtube]

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/ (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/resources.html)
http://winprog.org/tutorial/es/menus.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 (https://goo.gl/qcRcMM)
Título: Re: Icono en Allegro
Publicado por: vangodp en 1 Septiembre 2017, 02:42 AM
para que el codeblocks gener el icon debes seguir esos pasos.

1º Tener el archivo windres correctamente configurado.
(http://www.clubedohardware.com.br/uploads/monthly_2017_03/recursos.jpg.2b98103c62d4a09e9d3eaf6f323b8540.jpg)
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í:
(http://www.clubedohardware.com.br/uploads/monthly_2017_03/projeto.jpg.f34273f98d7d5a42eb88bae9f854d924.jpg)
Como puedes ver el archivo resource.rc está junto.

3º En el rc tengo eso:
(http://www.clubedohardware.com.br/uploads/monthly_2017_03/resource_rc.jpg.1ef4f874d8caae11f0eb9c369b510866.jpg)

4º Compilar(http://www.clubedohardware.com.br/uploads/monthly_2017_03/compilar.jpg.42e3a4967edb4914d3d2b8666e24d305.jpg)

5º traz compilar, dependiendo de si has usado debug o release, salirá uma carpeta nueva junto al icono do proyecto, en mi caso debug.
(http://www.clubedohardware.com.br/uploads/monthly_2017_03/Debug.jpg.ae1bf22b0bb6562e638c70a73437bd96.jpg)

6º ¡Listo! Como se puede ver la imaje está en el exe:
(http://www.clubedohardware.com.br/uploads/monthly_2017_03/saitama.ico.jpg.af26f3dcac4e9f123342679d38c89d6f.jpg)

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

Espero que sirva.
Título: Re: Icono en Allegro
Publicado por: cisco.quijadac en 1 Septiembre 2017, 17:52 PM
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;
}