Página 5 de 6

HMG 3.x + WVG = Harbour Multi GT

Enviado: 11 Mar 2016 15:00
por microvolution
asimoes escreveu:Persistindo a gente vai longe.
Prezado "asimoes" as suas palavras foram mais que encorajadoras para mim.
Vou fuçar aqui até descobrir como compilar 2 GTs, por enquanto, e, no meu caso as GTWIN + GTWVG ou vice-versa, para poder usar os recursos gráficos da HMG e da GTWVG ao mesmo tempo. Claro, que, quando me refiro ao mesmo tempo, é, o princípio que já mencionei:
- num módulo uso GTWVG e
- noutro módulo a HMG e seus formsWINDOW.
Ah! baixei o seu exemplo e ficou TopD+
quem usar a miniGUI ext, vai amar!
Ainda estou engatinhando, e, não posso ir mais do que pouco que já sei, para não perder muito tempo.
Se eu conseguir, ou se alguém conseguir e nos ajudar, estarei rindo à toa, pois poderei decidir em qual módulo (dentro do mesmo .EXE) qual lib usar... isso será maravilhoso - mais que ótimo!
Ah! já ia me esquecendo: Seu exemplo, todas as janelas fecham e não ficam travadas como no que foi proposto. Meus parabéns, mais uma vez!

HMG 3.x + WVG = Harbour Multi GT

Enviado: 11 Mar 2016 15:11
por asimoes
Segue uma nova versão do exemplo com Minigui + gtwvg + mingw

Eu inclui algumas funções em C para ajuste de tela.

HMG 3.x + WVG = Harbour Multi GT

Enviado: 11 Mar 2016 15:29
por asimoes
Eu informei no demo.hbp gtwvt.hbc esse hbc não existe é só remover do demo.hbp

HMG 3.x + WVG = Harbour Multi GT

Enviado: 11 Mar 2016 15:38
por asimoes
Olha só que interessante podemos debugar também:
Debug com Minigui
Debug com Minigui

HMG 3.x + WVG = Harbour Multi GT

Enviado: 11 Mar 2016 16:26
por microvolution
Muito bom professor!
Agora, que posso continuar usando a GTWVG dentro da HMG, só falta-me entender como fazer o que já perguntei... aí esterei :)) pois a GTWVG, a HMG, pra mim, são ótimas, cada uma com suas peculiaridades!

HMG 3.x + WVG = Harbour Multi GT

Enviado: 11 Mar 2016 21:48
por Claudio Soto
Toledo escreveu:
microvolution escreveu:
ou realmente só o Roberto Lopez, o Dr. Soto...

Bom, para que o programa de instalação da HMG já venha com a lib GTWVW compilada, sim, só o Dr. Claudio Soto poderá incluir a GTWVW na instalação da HMG.
Por ahora no existe ningún interés en integrar o agregar ninguna librería GT a HMG.

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 09:00
por asimoes
Essa opção de usar gt com minigui e hmg é um paliativo, o ideal é aplicação ser desennvolvida usando somente recursos da lib, ou seja sem gui/console

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 11:10
por microvolution
asimoes escreveu:Essa opção de usar gt com minigui e hmg é um paliativo, o ideal é aplicação ser desennvolvida usando somente recursos da lib, ou seja sem gui/console
traduzindo:
não entendi "NadicaDiNada" :))

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 11:22
por JoséQuintas
Apenas pra clarear:

A janela de GT é a mesma janela Windows de qualquer formulário e/ou controle.
A diferença é que o Harbour está sempre atualizando a área da janela com o texto.

E os controles usados pela GTWVG não são todos iguais, mas os que começam com WVG são padrão.
É uma chamada à API do Windows que cria janelas, igual a qualquer LIB faz, incluindo a HMG.

Código: Selecionar todos

METHOD WvgWindow:createControl()

   LOCAL hWnd, aPosSz

   ::nID := ::oParent:GetControlId()

   aPosSz := ::getPosAndSize( ::aPos, ::aSize )

   hWnd := wapi_CreateWindowEx( ;
      ::exStyle, ;
      ::className(), ;
      "", ;                              /* window name */
      ::style, ;
      aPosSz[ 1 ], aPosSz[ 2 ], ;
      aPosSz[ 3 ], aPosSz[ 4 ], ;
      ::oParent:hWnd, ;
      ::nID, ;                           /* hMenu       */
      NIL, ;                             /* hInstance   */
      NIL )                              /* lParam      */
Apenas a janela principal, que pode até ficar oculta, é que acaba presa às atualizações do Harbour no estilo de GT.
As demais, são iguais às janelas de qualquer LIB.

Vários fontes em C que tem na HMG, já existem no Harbour.
Estão espalhados em HBWIN, GTWVG e GTWVW.
No Harbour 3.4 o Viktor moveu mais dessas funções pra hbwin, deixando no padrão da API do Windows, e retirando da GTWVG e GTWVW.

Janela Windows é janela Windows, qualquer que seja a LIB.
TUDO da HMG pode ser incluso na GTWVG.
Basta o pessoal da HMG enxergar isso, que pode existir uma HMG fazendo parte do Harbour oficial.
Se o nome é HMG ou GTWVG, pelo menos pra mim não faz diferença.
Quanto antes enxergarem isso, melhor pra todos.
Eu enxerguei isso desde o começo, mas não tenho conhecimento suficiente pra mexer.
Pelo pouco que vi nos fontes, a HMG extended está mais próxima de ser mixada com GTWVG.

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 11:53
por Claudio Soto
JoséQuintas escreveu:Apenas pra clarear:

A janela de GT é a mesma janela Windows de qualquer formulário e/ou controle.
A diferença é que o Harbour está sempre atualizando a área da janela com o texto.

E os controles usados pela GTWVG não são todos iguais, mas os que começam com WVG são padrão.
É uma chamada à API do Windows que cria janelas, igual a qualquer LIB faz, incluindo a HMG.

Código: Selecionar todos

METHOD WvgWindow:createControl()

   LOCAL hWnd, aPosSz

   ::nID := ::oParent:GetControlId()

   aPosSz := ::getPosAndSize( ::aPos, ::aSize )

   hWnd := wapi_CreateWindowEx( ;
      ::exStyle, ;
      ::className(), ;
      "", ;                              /* window name */
      ::style, ;
      aPosSz[ 1 ], aPosSz[ 2 ], ;
      aPosSz[ 3 ], aPosSz[ 4 ], ;
      ::oParent:hWnd, ;
      ::nID, ;                           /* hMenu       */
      NIL, ;                             /* hInstance   */
      NIL )                              /* lParam      */
Apenas a janela principal, que pode até ficar oculta, é que acaba presa às atualizações do Harbour no estilo de GT.
As demais, são iguais às janelas de qualquer LIB.

Vários fontes em C que tem na HMG, já existem no Harbour.
Estão espalhados em HBWIN, GTWVG e GTWVW.
No Harbour 3.4 o Viktor moveu mais dessas funções pra hbwin, deixando no padrão da API do Windows, e retirando da GTWVG e GTWVW.

Janela Windows é janela Windows, qualquer que seja a LIB.
TUDO da HMG pode ser incluso na GTWVG.
Basta o pessoal da HMG enxergar isso, que pode existir uma HMG fazendo parte do Harbour oficial.
Se o nome é HMG ou GTWVG, pelo menos pra mim não faz diferença.
Quanto antes enxergarem isso, melhor pra todos.
Eu enxerguei isso desde o começo, mas não tenho conhecimento suficiente pra mexer.
Pelo pouco que vi nos fontes, a HMG extended está mais próxima de ser mixada com GTWVG.
Por supuesto que cualquier programa en Windows que cree una ventana o un control utiliza las mismas funciones del API, pero existe una diferencia abismal entre el funcionamiento interno de las GT y cualquiera de las lib graficas (HMG, MiniGUI, HWG, etc.), por eso las lib graficas poseen una eficiencia y un potencial enorme. Decir que las GT por utilizar funciones del API que utilizan las lib graficas es practicamente lo mismo, equivale a afirmar que los programadores de clipper porque usan los mismos comandos sus programas no tienen diferencia y todo es lo mismo, y eso no es así, la diferencia la hace en como combinen los comandos/funciones para que algunos sean unos fenómenos y otros apenas unos aprendices.

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 12:22
por JoséQuintas
Já coloquei aqui no grupo muita coisa sobre isso.
Cada LIB tem seu próprio jeito de controlar como os controles são apresentados na tela.
Isso que o que as torna incompatíveis.
Uma LIB pode chamar o que controla mostrar/ocultar de um jeito, umas chamam de Enable/Disable, outras chamam de Hide/Show.
Acabam chamando a mesma função de API, mas por causa do nome utilizado ficam incompatíveis.
Mas é provável que exista uma função de API que retorne isso, o que dispensaria o nome diferente.

Eu não disse que é fácil, eu disse que é possível.
Se levar um ano pra isso acontecer.... pelo menos vai acontecer.

HMG, HMG extended, OHMG.
Basta comparar os fontes delas. Tiveram muito trabalho pra reescrever fontes. Não foi fácil, mas foi possível.
E se isso tivesse sido feito dentro do que faz parte do Harbour?

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 12:29
por JoséQuintas
Nota:

Não é fácil acrescentar uma LIB como parte do Harbour, ainda mais sendo somente Windows.
Como a GTWVG é a única que faz parte do Harbour, pode ser a alternativa a ser usada como base.
Provavelmente a primeira exigência seria a tela compatível com GT, que já existe na GTWVG.

A GTWVW só faz parte de contribuições no Harbour 3.4, apesar de também existir nos fontes do Harbour 3.2.
Então não seria uma opção válida como base.

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 15:41
por JoséQuintas
E se os controles fossem criados com classe, talvez fosse possivel aplicar herança quando necessário, e deixar tudo compatível.

Não tenho idéia de como fazer isso.
Mas acho que tá mais fácil aprender isso do que ver alguma coisa pronta no Harbour.
Algum dia mostro isso.

Infelizmente quem conhece do assunto cria lib separada do projeto.
A própria HMG é exemplo disso, pois se dividiu em 3.
Se são 3 projetos usando HMG, como imaginar um projeto único no Harbour.

No meu ponto de vista, a GTWVG ficou ainda melhor no Harbour 3.4.
Só porque o Viktor transferiu funções APIs do Windows pra hbwin, e criou chamadas em PRG.
Não sei se ele fez isso só pra eliminar duplicação GTWVG/GTWVW, mas abriu possibilidades.

Diga uma coisa:
Se as funções de API estiverem em hbwin, vai precisar de alguma rotina em C na HMG?
Acho que qualquer coisa para o futuro começa aí.

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 18:41
por Claudio Soto
JoséQuintas escreveu:Já coloquei aqui no grupo muita coisa sobre isso.
Cada LIB tem seu próprio jeito de controlar como os controles são apresentados na tela.
Isso que o que as torna incompatíveis.
Uma LIB pode chamar o que controla mostrar/ocultar de um jeito, umas chamam de Enable/Disable, outras chamam de Hide/Show.
Acabam chamando a mesma função de API, mas por causa do nome utilizado ficam incompatíveis.
Mas é provável que exista uma função de API que retorne isso, o que dispensaria o nome diferente.

Eu não disse que é fácil, eu disse que é possível.
Se levar um ano pra isso acontecer.... pelo menos vai acontecer.

HMG, HMG extended, OHMG.
Basta comparar os fontes delas. Tiveram muito trabalho pra reescrever fontes. Não foi fácil, mas foi possível.
E se isso tivesse sido feito dentro do que faz parte do Harbour?
No me refeferia a como las diferentes lib denomina cada una las diferentes fuciones del API, lo mas complejo en Windows no es usar una funcion del API, lo mas complejo es manejar adecuadamente los mensajes de Windows y de una forma coerente en toda la lib para evitar una superposicion parcial de tareas, el uso de punteros mal referenciados, handles que dejan de ser validos, uso ineficiente de los recursos del SO y un largo etc.

HMG 3.x + WVG = Harbour Multi GT

Enviado: 12 Mar 2016 19:33
por JoséQuintas
Só vou me convencer disso quando criar uma lib.
Se daqui a um ano eu ainda estiver usando Harbour, talvez descubra.
Ou se é assim, talvez melhor criar os controles no Delphi, e só usá-los no Harbour, sem criar nada no Harbour.