Imagens dentro do executável
Moderador: Moderadores
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Imagens dentro do executável
Boa tarde
tem como colocar as imagens que utilizo nos botoes, combos, etc dentro do executável, ou seja para não precisar levar a pastinha com todas as imagens, sem contar que o usuário pode apagar e o programa ficar muito feio.
Obrigado.
tem como colocar as imagens que utilizo nos botoes, combos, etc dentro do executável, ou seja para não precisar levar a pastinha com todas as imagens, sem contar que o usuário pode apagar e o programa ficar muito feio.
Obrigado.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Imagens dentro do executável
Amigo, é só usar um arquivo de resource (*.RC).
Crie um arquivo RC, por exemplo demo.rc, e informar os arquivos de imagens:
No arquivo PRG ou FMG, use assim:
No seu projeto incluir o arquivo RC para compilação. Se estiver usando arquivo HBP, incluir o arquivo RC junto com os PRGs. Na IDE, incluir o arquivo RC no projeto,na aba de RC-Bat.
Abraços,
Crie um arquivo RC, por exemplo demo.rc, e informar os arquivos de imagens:
Código: Selecionar todos
BUTTON1 BITMAP BUTTON.BMP
WORLD ICON WORLD.ICOCódigo: Selecionar todos
DEFINE WINDOW Form_Main ;
AT 0,0 ;
WIDTH 640 HEIGHT 480 ;
TITLE 'Main Window' ;
ICON 'WORLD' ;
MAIN
@ 200,140 BUTTON ImageButton_1 ;
PICTURE 'button1' ;
ACTION MsgInfo('Button Pressed!','!') ;
WIDTH 29 ;
HEIGHT 29 TOOLTIP 'Print Preview' ;
END WINDOWAbraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Imagens dentro do executável
Boa noite
Mais uma vez obrigado Toledo, vou fazer os testes, tenho muita coisa pra mudar, "mas não se faz um omelete sem quebrar os ovos", kkkkkkkk
:-Y
Mais uma vez obrigado Toledo, vou fazer os testes, tenho muita coisa pra mudar, "mas não se faz um omelete sem quebrar os ovos", kkkkkkkk
:-Y
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Imagens dentro do executável
Toledo infelizmente não funcionou, fiz os primeiros teste mas não deu certo, onde estou errando??? :% segue trechos do sistema onde estou testando
no arquivo fenix.fmg tem este trecho onde fiz as modificações nos três primeiros botoes, já no quarto botão (botao sair) que aponta para imagem funciona perfeito
DEFINE SPLITBOX
DEFINE TOOLBAR TBotoes BUTTONSIZE 104,64 FONT FonteMenu SIZE 11 FLAT
BUTTON tEntidade CAPTION "&Entidades" PICTURE 'BTNCLIENTE' ACTION mEntidade() TOOLTIP "Manuatenção de Entidades"
BUTTON tProdutos CAPTION "&Produtos" PICTURE 'BTNPRODUTO' ACTION mProduto() TOOLTIP "Manuatenção de Produtos"
BUTTON tGruposProd CAPTION "&Grupos" PICTURE 'BTNGRUPO' ACTION mGrupo() TOOLTIP "Manutenção de Grupos de Produtos"
END TOOLBAR
DEFINE TOOLBAR TBtSair BUTTONSIZE 104,64 FONT FonteMenu SIZE 11 FLAT
BUTTON Sair CAPTION "&Sair" PICTURE "imagens\sair.jpg" ACTION sair() TOOLTIP "Encerrar o sistemas"
END TOOLBAR
END SPLITBOX
arquivo fenix.rc
BTNCLIENTE BIPMAP d:\fenix\imagens\clientes.bmp
BTNPRODUTO BIPMAP d:\fenix\imagens\produtos.bmp
BTNGRUPO BIPMAP d:\fenix\imagens\grupos.bmp
arquivo fenix.hbp
-hbexe
-mt
-inc
-L\fenix\libs -lrddleto
-L\fenix\libs -lgenericas
-o\fenix\fenix
Fenix.Prg
consultaAcessos.prg
fConsulta.Prg
fSetup.Prg
farquivos.prg
f_Queries.prg
login.prg
manutBancos.prg
manutCeps.prg
manutCfops.prg
manutContador.prg
manutCstCsosn.prg
manutEmpresa.prg
manutEntidade.prg
manutFormasDePagamento.prg
manutGrupo.Prg
manutHistoricoDeCaixa.prg
manutIbge.prg
manutImpressorasFiscais.prg
manutLog.prg
manutNcmsh.prg
manutOrigemProdutos.prg
manutPedidos.prg
manutProduto.prg
manutRedesCartoes.prg
manutTipoDocumento.prg
manutTributacao.prg
manutUnidades.prg
manutUsuario.prg
manutVendedor.prg
relatUnidades.prg
frelatorios.prg
FENIX.RC
no arquivo fenix.fmg tem este trecho onde fiz as modificações nos três primeiros botoes, já no quarto botão (botao sair) que aponta para imagem funciona perfeito
DEFINE SPLITBOX
DEFINE TOOLBAR TBotoes BUTTONSIZE 104,64 FONT FonteMenu SIZE 11 FLAT
BUTTON tEntidade CAPTION "&Entidades" PICTURE 'BTNCLIENTE' ACTION mEntidade() TOOLTIP "Manuatenção de Entidades"
BUTTON tProdutos CAPTION "&Produtos" PICTURE 'BTNPRODUTO' ACTION mProduto() TOOLTIP "Manuatenção de Produtos"
BUTTON tGruposProd CAPTION "&Grupos" PICTURE 'BTNGRUPO' ACTION mGrupo() TOOLTIP "Manutenção de Grupos de Produtos"
END TOOLBAR
DEFINE TOOLBAR TBtSair BUTTONSIZE 104,64 FONT FonteMenu SIZE 11 FLAT
BUTTON Sair CAPTION "&Sair" PICTURE "imagens\sair.jpg" ACTION sair() TOOLTIP "Encerrar o sistemas"
END TOOLBAR
END SPLITBOX
arquivo fenix.rc
BTNCLIENTE BIPMAP d:\fenix\imagens\clientes.bmp
BTNPRODUTO BIPMAP d:\fenix\imagens\produtos.bmp
BTNGRUPO BIPMAP d:\fenix\imagens\grupos.bmp
arquivo fenix.hbp
-hbexe
-mt
-inc
-L\fenix\libs -lrddleto
-L\fenix\libs -lgenericas
-o\fenix\fenix
Fenix.Prg
consultaAcessos.prg
fConsulta.Prg
fSetup.Prg
farquivos.prg
f_Queries.prg
login.prg
manutBancos.prg
manutCeps.prg
manutCfops.prg
manutContador.prg
manutCstCsosn.prg
manutEmpresa.prg
manutEntidade.prg
manutFormasDePagamento.prg
manutGrupo.Prg
manutHistoricoDeCaixa.prg
manutIbge.prg
manutImpressorasFiscais.prg
manutLog.prg
manutNcmsh.prg
manutOrigemProdutos.prg
manutPedidos.prg
manutProduto.prg
manutRedesCartoes.prg
manutTipoDocumento.prg
manutTributacao.prg
manutUnidades.prg
manutUsuario.prg
manutVendedor.prg
relatUnidades.prg
frelatorios.prg
FENIX.RC
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Imagens dentro do executável
O correto é BITMAP para arquivos BMP.Cavalo Marinho escreveu:BTNCLIENTE BIPMAP d:\fenix\imagens\clientes.bmp
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Imagens dentro do executável
Bom dia, desculpe-me a minha falta de atenção :^|
Más mesmo assim, corrigir o arquivo FENIX.RC e mesmo assim não funfou, será que tem alguma relação com botoes em outras telas? acredito que não, é que troquei somente imagens dos botoes da tela principal do sistema, as outras telas ainda permanecem no modo antigo, lembrando que utilizo minigui extend com mingw.
Más mesmo assim, corrigir o arquivo FENIX.RC e mesmo assim não funfou, será que tem alguma relação com botoes em outras telas? acredito que não, é que troquei somente imagens dos botoes da tela principal do sistema, as outras telas ainda permanecem no modo antigo, lembrando que utilizo minigui extend com mingw.
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Imagens dentro do executável
Olá...
Também estou tentando compilar com as imagens no programa mas tá dando o seguinte erro:
Linha de criação do formulario com o icone
arquivo RC
o arquivo MDV.ICO está no path.
não consegui achar esse arquivo se tiver alguma coisa a ver...
Rubens
Também estou tentando compilar com as imagens no programa mas tá dando o seguinte erro:
Código: Selecionar todos
Lines 21857, Functions/Procedures 17
Generating C source output to '.hbmk\win\bcc\TESTANFC.c'... Done.
hbmk2: Compiling resources...
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Error TESTANFC.rc 2 17: Allocate failed
hbmk2[TESTANFC]: Error: Running resource compiler. 20018
brcc32.exe -IC:\BCC55\Include -Ic:\minigui\harbour\include -Ic:\minigui\include -IC:\hmg\TESTANFC C:\hmg\TESTANFC\TESTANFC.rc -fo.hbmk\win\bcc\TESTANFC.res
****
Failure!
Código: Selecionar todos
DEFINE WINDOW TEMPLATE AT 206 , 305 WIDTH 747 HEIGHT 410 TITLE "Sistema de verificação de NFe/NFCe" ICON "MDVICO" MAIN BACKCOLOR {192,192,192}Código: Selecionar todos
MDVICO ICON MDV.ICO
não consegui achar esse arquivo se tiver alguma coisa a ver...
Código: Selecionar todos
hbmk\win\bcc\TESTANFC.res
"Eu e minha casa servimos ao Senhor e você
"
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Imagens dentro do executável
Amigo, se for possível, compactar (ZIP ou RAR) estes arquivos BMP e anexar aqui neste tópico, assim eu monto um demo para você.Cavalo Marinho escreveu:corrigir o arquivo FENIX.RC e mesmo assim não funfou
Rubens, compactar este arquivo ICO e anexar aqui neste tópico, ai eu faço um demo também!rubens escreveu:Também estou tentando compilar com as imagens no programa mas tá dando o seguinte erro:
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Imagens dentro do executável
Boa noite Toledo
Segue as imagens em anexo, e são estas mesmas imagens que estou utilizando nos botoes, e estão funcionando quando aponto para a pasta imagens, agora quando o botao aponta para a variável do arquivo fenix.rc não funciona, o botão fica sem imagem.
Segue as imagens em anexo, e são estas mesmas imagens que estou utilizando nos botoes, e estão funcionando quando aponto para a pasta imagens, agora quando o botao aponta para a variável do arquivo fenix.rc não funciona, o botão fica sem imagem.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Imagens dentro do executável
Amigo, segue em anexo um exemplo!
Abraços,
Abraços,
- Anexos
-
resource.zip- (775.05 KiB) Baixado 219 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Imagens dentro do executável
Amiguinhos,
Não é uma solução, mas uma dica.
Eu sempre compilei meu sistema incluindo nele as .RCs e imagens tornando-o um executável único. Mas com o tempo e seu tamanho aumentando, inclusive pela existencia de muitos módulos e telas e pelo fato de usar BRC não houve mais possibilidade de grudar os .RCs ao EXE.
Parti então para a colocação de todos os recursos em .DLL e não me arrependo, afinal encontramos por ai sempre um SISTEMA.EXE com uma SISTEMA.DLL.
Outra coisa interessante reside no fato de atualizar-mos os clientes e por um erro jogar uma .DLL antiga sobre uma nova e BUG.
Adotei o seguinte esquema:
Meu sistema abre a sua .DLL correspondente caso ela tenha o mesmo nome do EXEcutável. Portanto a SISTEMA1.DLL sera executada apenas pelo SISTEMA1.DLL, a SISTEMA2.DLL sera executada apenas pelo SISTEMA2.DLL, assim por diante.
Ter um EXEcutável e uma DLL para ele é bem profissional e limpo, apesar de eu ainda usar a pasta IMAGENS, ka ka ka.
Não é uma solução, mas uma dica.
Eu sempre compilei meu sistema incluindo nele as .RCs e imagens tornando-o um executável único. Mas com o tempo e seu tamanho aumentando, inclusive pela existencia de muitos módulos e telas e pelo fato de usar BRC não houve mais possibilidade de grudar os .RCs ao EXE.
Parti então para a colocação de todos os recursos em .DLL e não me arrependo, afinal encontramos por ai sempre um SISTEMA.EXE com uma SISTEMA.DLL.
Outra coisa interessante reside no fato de atualizar-mos os clientes e por um erro jogar uma .DLL antiga sobre uma nova e BUG.
Adotei o seguinte esquema:
Meu sistema abre a sua .DLL correspondente caso ela tenha o mesmo nome do EXEcutável. Portanto a SISTEMA1.DLL sera executada apenas pelo SISTEMA1.DLL, a SISTEMA2.DLL sera executada apenas pelo SISTEMA2.DLL, assim por diante.
Ter um EXEcutável e uma DLL para ele é bem profissional e limpo, apesar de eu ainda usar a pasta IMAGENS, ka ka ka.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Imagens dentro do executável
Amiguinhos,
Vou apresentar como eu uso com FiveWIN. Para MiniGUI com certeza o processo será o mesmo só um pouquinho diferente.
Todos os recursos que preciso são chamados dentro de arquivos .RC e quanto existe uma mudança em telas ou uma manutenção nestes recursos eu refaço a .DLL, assim:
No exemplo acima estou anexando na .DLL um único .RC. Veja abaixo o seu conteúdo:
Neste .RC faço a inclusão unificada de todos os .RCs que necessito. Dividi as NFWHDLGs em vários porque uso o WorkShop e ele tem limite de tamanho destes arquivos, assim como tem limite na hora de colar os recursos no executável.
Agora vem a parte mais dificil e dolorosa de todas. Acrescentar a chamada a .DLL dentro do sistema:
As funções cFileName( GetModuleFileName( GetInstance() ) ) irão trazer o nome do aplicativo aberto. Em MiniGUI será necessário buscar funções aproximadas, pois não lembro se são especificas da FiveWIN.
Vou apresentar como eu uso com FiveWIN. Para MiniGUI com certeza o processo será o mesmo só um pouquinho diferente.
Todos os recursos que preciso são chamados dentro de arquivos .RC e quanto existe uma mudança em telas ou uma manutenção nestes recursos eu refaço a .DLL, assim:
Código: Selecionar todos
rem @ECHO OFF
rem RC file to 32 bits resources DLL
rem syntax: rc2dll32.bat Your_rc_file !!! without the .RC extension
@ECHO #include "WinApi.ch" > NFWH29.RC
rem @ECHO 1 24 themed.manifest >> NFWH29.RC
@ECHO #include "nfwh.rc" >> NFWH29.RC
@SET FWDIR=%CAMINHO%
@IF EXIST NFWH29.DLL DEL NFWH29.DLL
copy %FWDIR%\dll\SCREEN32.C
%FWDIR%\bin\bcc32 -c -I%FWDIR%\include SCREEN32.C
%FWDIR%\bin\brc32 -r NFWH29.rc
%FWDIR%\bin\ilink32 /Tpd /v %FWDIR%\lib\c0d32.obj dll\SCREEN32.OBJ, NFWH29.DLL,,%FWDIR%\lib\cw32.lib %FWDIR%\lib\import32.lib,, NFWH29.RES
@IF EXIST NFWH29.res DEL NFWH29.RES > NULL
@IF EXIST NFWH29.ils DEL NFWH29.ils > NULL
@IF EXIST NFWH29.ilf DEL NFWH29.ilf > NULL
@IF EXIST NFWH29.ilc DEL NFWH29.ilc > NULL
@IF EXIST NFWH29.ild DEL NFWH29.ild > NULL
@IF EXIST NFWH29.tds DEL NFWH29.tds > NULL
@IF EXIST NFWH29.map DEL NFWH29.map > NULL
REM @IF EXIST NFWH29.rc DEL NFWH29.rc > NULL
@IF EXIST NULL. DEL NULL.
@DIR NFWH29.DLL
@COPY /y NFWH29.DLL C:\SISTEMA
:fim
Código: Selecionar todos
#include "WinApi.ch"
#include "nfwaux.rc"
#include "nfwhbmp.rc"
#include "nfwhdlg.rc"
#include "nfwhdlg1.rc"
#include "nfwhdlg2.rc"
#include "nfwhdlg3.rc"
#include "prev32.rc"
#include "GenLabel.rc"
#include "nfwhtms.rc"
#include "nfwhstat.rc"
#include "nfwform.rc"
Agora vem a parte mais dificil e dolorosa de todas. Acrescentar a chamada a .DLL dentro do sistema:
Código: Selecionar todos
Cl_NFWHDLL := StrTran( cFileName( GetModuleFileName( GetInstance() ) ), ".EXE", ".DLL" )
Set Resources to Cl_NFWHDLL
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.