Misturando LIBs 2024.
Enviado: 12 Abr 2024 15:28
Os detalhes principais são:
a) LIB GUI costuma paralisar o processo inicial.
Por isso é tão normal travar ao misturar LIBs.
Se precisar, pode renomear o processo pra que isso não aconteça (remover o INIT)
Em multithread acontece o contrário: falta esse processo, precisa chamá-lo
Não é com qualquer LIB que o problema acontece, acho que só GTWVW.
b) LIB GUI costuma forçar a GTGUI em Harbour (e não em xharbour)
Se a mistura até hoje dá trabalho, é por conta das próprias LIBs.
c) Não entendi direito até hoje, só sei que o hb_gtReload("WVG") é suficiente pras LIBs GUI, substituindo a GTGUI
com GTWVG como default.
Acima, o processo principal vai ficar aguardando que os outros processos terminem.
A partir daí pode ter processos em qualquer LIB, preferencialmente GTWVG criando o processo a ser paralizado.
Outro processo em gtwvg:
Em HMG:
É só isso.
Pode usar no mesmo EXE/Aplicativo GTWVG, HWGUI e HMG Extended.
Detalhe adicional:
HWGUI tem uma função com mesmo nome da HMG.
Se quiser misturar as duas, ou usa BORLAND, ou no MINGW adiciona o parâmetro na linquedição pra permitir nomes duplicados.
Usar MINIGUIs misturadas não dá, quase tudo tem nome repetido.
Misturar HWGUI e HMG é interessante pra quem já usa HWGUI e tem aplicativo grande pra converter.
A partir daí é só se divertir.
NÃO É misturar controles.
Um cadastro de clientes usando GTWVG
Um cadastro de clientes usando HWGUI
Um cadastro de clientes usando HMG Extended
Ótimo pra migração.
Vai poder colocar em prática um módulo novo, sem desativar o velho, ou deixando o velho como reserva.
Ou... também pode ser mais radical:
Cria um EXE com os módulos de uma, cria um EXE com os módulos de outra, e chame passando parâmetros.
a) LIB GUI costuma paralisar o processo inicial.
Por isso é tão normal travar ao misturar LIBs.
Se precisar, pode renomear o processo pra que isso não aconteça (remover o INIT)
Em multithread acontece o contrário: falta esse processo, precisa chamá-lo
Não é com qualquer LIB que o problema acontece, acho que só GTWVW.
b) LIB GUI costuma forçar a GTGUI em Harbour (e não em xharbour)
Se a mistura até hoje dá trabalho, é por conta das próprias LIBs.
c) Não entendi direito até hoje, só sei que o hb_gtReload("WVG") é suficiente pras LIBs GUI, substituindo a GTGUI
com GTWVG como default.
Código: Selecionar todos
hb_ThreadStart( { || OutroProcesso() } )
hb_ThreadWaitForAll()
A partir daí pode ter processos em qualquer LIB, preferencialmente GTWVG criando o processo a ser paralizado.
Outro processo em gtwvg:
Código: Selecionar todos
hb_gtReload( "WVG" )
SetMode(25,80)
CLS
@ 1,0 SAY "teste" GET var
READ
Código: Selecionar todos
hb_gtReload( "WVG" )
hmg_Init()
//segue fonte HMG
Pode usar no mesmo EXE/Aplicativo GTWVG, HWGUI e HMG Extended.
Detalhe adicional:
HWGUI tem uma função com mesmo nome da HMG.
Se quiser misturar as duas, ou usa BORLAND, ou no MINGW adiciona o parâmetro na linquedição pra permitir nomes duplicados.
Usar MINIGUIs misturadas não dá, quase tudo tem nome repetido.
Misturar HWGUI e HMG é interessante pra quem já usa HWGUI e tem aplicativo grande pra converter.
A partir daí é só se divertir.
NÃO É misturar controles.
Um cadastro de clientes usando GTWVG
Um cadastro de clientes usando HWGUI
Um cadastro de clientes usando HMG Extended
Ótimo pra migração.
Vai poder colocar em prática um módulo novo, sem desativar o velho, ou deixando o velho como reserva.
Ou... também pode ser mais radical:
Cria um EXE com os módulos de uma, cria um EXE com os módulos de outra, e chame passando parâmetros.