HMG - Imagem BMP não carrega no arquivo Resource .RC

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

Post Reply
MICROVOLUTION
Posts: 79
Joined: Sat May 30, 2015 5:15 am
Been thanked: 3 times

HMG - Imagem BMP não carrega no arquivo Resource .RC

Post by MICROVOLUTION »

Tenho as seguintes imagens .BMP:

Code: Select all

1	splash.bmp
2	Tlogin.bmp
Ambos estão anexados ao .EXE através do arquivo .RC:

Code: Select all

1	Splashhmg     BITMAP     I:\SISTEMA\Splash.bmp
2	Loginhmg            BITMAP     I:\SISTEMA\logo\TLogin.bmp
As funções/procedures que chamam as imagens são praticamente idênticas, exceto no nome delas.
A a do splash é:

Code: Select all

1	CreateScreenSplash ("Splashhmg", nDelaySeconds, nAnimateSeconds)
Já a do login é:

Code: Select all

1	LOGIN_HMG("Loginhmg")
Observem que aparentemente a forma como são acionadas as funções (ou melhor PROCEDURES) são semelhantes, exceto nos nomes e que no PROCEDURE splash tem mais informações.
Agora vejamos como é dentro de cada procedure, no início.
A do splash é:

Code: Select all

1	PROCEDURE CreateScreenSplash (cFileName, nDelaySeconds, nAnimateSeconds)
2	*-------------------------------------------------------------------------------------------*
3	   LOCAL hBitmap, Image_Width := 500 , Image_Height := 200 , Image_BackColor
4	 
5	   IF HMG_GetImageInfo (cFileName, @Image_Width, @Image_Height, @Image_BackColor) == .F.
6	       MsgHMGError ("Erro de abertura do arquivo de imagem de 'cFileName'. Programa será encerrado imediatamente." )       
7	   ENDIF
Já a do login, é a mesma coisa, exceto o que já dissemos, veja:

Code: Select all

1	PROCEDURE LOGIN_HMG (TelaLogin)
2	   LOCAL hBitmap, Image_Width := 450 , Image_Height := 450 , Image_BackColor := 100
3	 
4	   IF HMG_GetImageInfo (TelaLogin, @Image_Width, @Image_Height, @Image_BackColor) == .F.
5	       MsgHMGError ("Erro de abertura do arquivo de imagem de 'TelaLogin'. Programa será encerrado imediatamente." )
6	   ENDIF
Bom, ou melhor, mau rsrsrrs
O primeiro procedure CREATESCREENSPLASH () funciona perfeitamente.

Já o segundo que é o LOGIN_HMG() não funciona e, apresenta o erro descrito na linha que contém:

Code: Select all

1	       MsgHMGError ("Erro de abertura do arquivo de imagem de 'TelaLogin'. Programa será encerrado imediatamente." )
Se eu colocar no início do módulo que chama a LOGIN_HMG() a seguinte expressão:

Code: Select all

1	#define Loginhmg                 hb_DirBase() + "logo\TLogin.bmp"
e se modificar a chamada (tirando as "aspas") ao procedimento, para:

Code: Select all

1	LOGIN_HMG(Loginhmg)
... aí, com as 2 alterações funciona.
Só funciona dessa forma. Mas pra isso, a imagem TLOGIN.BMP precisa estar na pasta LOGO, não fica indexada dentro do .EXE.
O que faço pra resolver ou onde está o "erro óbivio" que não consigo ver?
Mais, informações, abri um link de discussão no fórum PCTOLEDO (no Brasil) que tem nos ajudado e muito.
O link do tópico é:
http://www.pctoledo.com.br/forum/viewto ... 45&t=25032

MICROVOLUTION
Posts: 79
Joined: Sat May 30, 2015 5:15 am
Been thanked: 3 times

Post by MICROVOLUTION »

olá!..
engraçado, que analisando aqui o código fonte, cheguei algumas conclusões:
- estou usando a lib GTWVG dentro da HMG 3.5 e compilando via IDE/HMG e não via .BAT personalizado;
- todas as imagens que são usadas na GTWVG em especial no PUSHBUTTON() são carregadas pra dentro do .EXE (sistema pronto) via arquivo .RC normalmente;
- somente as imagens que são usadas em IMAGE da HMG é que não carregam.

O que pode estar errado?
MICROVOLUTION wrote:
Wed Jan 06, 2021 3:35 am
1 splash.bmp
2 Tlogin.bmp
essas imagens são para usar dentro da HMG e não carregam.
Alguém se atreve a nos ajudar?

franco
Posts: 526
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Been thanked: 27 times

Post by franco »

Not sure if this is what you need.
In 3.4.4 .bmp have to be in hmg ide resources as well as your program resources.
All The Best,
Franco
Canada

User avatar
Claudio Ricardo
Posts: 66
Joined: Tue Oct 27, 2020 3:38 am
DBs Used: DBF, MySQL, MariaDB
Location: Bs. As. - Argentina
Has thanked: 12 times
Been thanked: 33 times

Post by Claudio Ricardo »

Hola...
Yo solucioné ese problema con este programa free:

https://www.carifred.com/quick_any2ico/

Convierte desde cualquier formato (hasta fotos) en .ico o mejor aún para HMG, en .png, conserva transparencias,
puede extraer imágenes e iconos desde .exe, es portable, redimensiona desde 16x16 px. a 512x512px. de salida.
Aunque para HMG conviene usar un sólo tamaño de salida !

Hi...
I solve with this free and portable soft:

https://www.carifred.com/quick_any2ico/

Convert any format at .ico or best for HMG .png, keep transparency, can extract from .exe,
output format from 16x16 px. to 512x512 px., In HMG better is .png one size format output.
(Sorry for my bad english) :oops:
Corrige al sabio y lo harás más sabio, Corrige al necio y lo harás tu enemigo.

User avatar
mustafa
Posts: 1047
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Been thanked: 258 times
Contact:

Post by mustafa »

+1
Gracias por el aporte
Mustafa

MICROVOLUTION
Posts: 79
Joined: Sat May 30, 2015 5:15 am
Been thanked: 3 times

Post by MICROVOLUTION »

Claudio Ricardo wrote:
Wed Jan 13, 2021 10:19 pm
:
não entendi bem.
é pra eu converter minha imagem em .ICO para poder a HMG aceitar a imagem dentro do meu SISTEMA.EXE via SISTEMA.RC ?
franco wrote:
Wed Jan 13, 2021 8:41 pm
Em 3.4.4 .bmp deve estar em recursos hmg ide, bem como seus recursos de programa.
por favor nobre professor, pode explicar melhor?
não entendi o que fazer: é pra mexer onde?

User avatar
mustafa
Posts: 1047
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Been thanked: 258 times
Contact:

Post by mustafa »

Hola MICROVOLUCION
Dentro de tu Proyecto crea una carpeta por ejemplo nombre ==> Resource
aquí estarán todos los ficheros jpg, png, ico etc.. etc. que necesitaras para tu aplicación

Para que la aplicación tenga un icono tenemos que crear un fichero.RC

ejemplo Pizza.rc que será el mismo nombre que nuestro Programa Principal
ejemplo Pizza.prg //<== Window Main

dentro del Fichero Pizza.prg //<== Window Main

Code: Select all

#include <hmg.ch>
*-------------------------------------*
  FUNCTION MAIN
*-------------------------------------*

 DEFINE WINDOW Form_1            ;
         AT 0,0                     ; 
	 WIDTH  336                 ;
	 HEIGHT 578                 ;
         ICON "Logo"                ;     //<====  está en fichero RC
         MAIN                       ;
         NOSIZE NOSYSMENU etc.. etc...

  @ 004,317 IMAGE imag_00 PICTURE Pizza1 WIDTH 013 HEIGHT 013  STRETCH    //<====  está en fichero RC

etc...etc..

dentro del Fichero Pizza.rc

Code: Select all

Logo    ICON        Resource\Beer.ico
Pizza1  BITMAP    Resource\ONx4.bmp
el fichero RC tiene que tener el mismo nombre que el fichero Principal.prg

Saludos
Mustafa

franco
Posts: 526
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Been thanked: 27 times

Post by franco »

Thank you Mustafa,
Works perfectly. With we are able to build from bat file in any folder
All The Best,
Franco
Canada

User avatar
Claudio Ricardo
Posts: 66
Joined: Tue Oct 27, 2020 3:38 am
DBs Used: DBF, MySQL, MariaDB
Location: Bs. As. - Argentina
Has thanked: 12 times
Been thanked: 33 times

Post by Claudio Ricardo »

Algo que aprendi despues de renegar un rato es que si quiero que se vea un icono
en el archivo .exe y en el acceso directo y no el que a Windows se le ocurra:
Convertirlo a 16x16 px. nombrarlo como Ej.: aaIcono.ico (Windows los ubica alfabeticamente)
ponerlo como icono de la ventana Main y PRIMERO en el archivo .rc

aaIcono ICON Resource\aaIcono.ico

luego el resto de imagenes e iconos...
Menos este primero todos los demás los convierto a .png y no tuve mas problemas.
Corrige al sabio y lo harás más sabio, Corrige al necio y lo harás tu enemigo.

Post Reply