Foro de elhacker.net

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!.
La-AyEqlUik

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
  1. HICON hMyIcon = LoadIcon(hInstance, MAKEINTRESOURCE(MAINICON));

Si alguien puede ayudarme se lo agradecería

Game.cpp
Código
  1. #include<allegro.h>
  2. #include<winalleg.h>
  3.  
  4. #define V_Ancho 800
  5. #define V_Alto 600
  6.  
  7. BITMAP *buffer;
  8.  
  9. int main() {
  10.    allegro_init();
  11.    install_keyboard();
  12.    install_mouse();
  13.    set_color_depth(32);
  14.    set_gfx_mode(GFX_AUTODETECT_WINDOWED,V_Ancho,V_Alto,0,0);
  15.    show_mouse(screen);
  16.  
  17.    buffer = create_bitmap(V_Ancho,V_Alto);
  18.    buffer = load_bitmap("background.bmp",0);
  19.  
  20.    blit(buffer,screen,0,0,0,0,V_Ancho,V_Alto);
  21.  
  22. while(!key[KEY_ESC]){
  23.    readkey;
  24.    }
  25.  
  26.   destroy_bitmap(buffer);
  27.  
  28.    return 0;
  29. }
  30. END_OF_MAIN();
  31.  

resource.rc
Código
  1. #ifndef _resource_rc
  2. #define _resource_rc
  3.  
  4. MAINICON    ICON    "ICON 32x32.ico"
  5.  
  6. #endif // _resource_rc
  7.  

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

Citar
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!.

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

Código
  1. #include <iostream>
  2. #include <allegro5/allegro.h>
  3. #include <allegro5/allegro_image.h>
  4.  
  5. int main () {
  6.  
  7. al_init();
  8. al_init_image_addon();
  9.  
  10. ALLEGRO_DISPLAY *display = al_create_display(800,600);
  11. ALLEGRO_BITMAP  *icon    = al_load_bitmap   ("icon.png");
  12.  
  13. al_set_display_icon(display, icon);
  14.  
  15. al_rest(3);
  16.  
  17. al_destroy_bitmap(icon);
  18. al_destroy_display(display);
  19. return 0;
  20. }