Página 1 de 1

Um outro lado da gtwvg

Enviado: 20 Nov 2018 10:00
por JoséQuintas
Tem este lado da gtwvg, que é o jeito que eu uso:
gtwvg.png

O que tem de especial?
Multithread.
Como eu já disse, multithread é como se fossem EXEs separados.
Abri 4 janelas com o browse do mesmo arquivo.
Nada especial pra isso.

Se fosse uma LIB GUI....
Teria que ficar inventando ALIAS diferentes.... a nào ser que pudesse usar multithread.

Detalhe:
na prática equivale a 5 janelas, sendo que a primeira está oculta.
a primeira, oculta, vai fechar automaticamente quando as outras 4 forem fechadas.
Pra ficar oculta, não fiz nada demais, apenas não mostra nada na tela, por isso não aparece janela.

Não deixa de ser um recurso interessante pra usar junto com outras LIBs gráficas.
Tá precisando uma janela hwgui ou minigui que apareça a cada N segundos?
Uma janela gtwvg oculta poderia fazer isso.
Quer ficar monitorando uma pasta? idem....
Quer enviar email em background? idem...
Vai da imaginação...

Um outro lado da gtwvg

Enviado: 20 Nov 2018 10:06
por JoséQuintas
Como curiosidade....

A janela em preto e branco ficou parecida com o padrão atual do Windows 10 kkkkkk
w10.png
Tanto trabalho pra ficar imitando o Windows.....
E o Windows imita o console kkkkkk

Um outro lado da gtwvg

Enviado: 20 Nov 2018 11:21
por Itamar M. Lins Jr.
Ola!
Se fosse uma LIB GUI....
Teria que ficar inventando ALIAS diferentes.... a nào ser que pudesse usar multithread.
Ainda não entendi isso ai em cima.
Porque teria que usar alias diferente ?
DBF aqui, posso abrir ele mesmo até a capacidade máxima do SO, sem MT ou com MT. Não sei pq teria que usar alias diferente.
Se chamar o EXE várias vezes, não é a mesma coisa ?
Muitos clientes aqui chamam até 3,4... vezes meu sistema, um no estoque outro nas entradas outro no contas a receber ou clientes... ficam os icones abertos na barra de tarefas.

Saudações,
Itamar M. Lins Jr.

Um outro lado da gtwvg

Enviado: 20 Nov 2018 11:33
por MSDN
Eu também não tenho conhecimento para responder, mas aqui nesse link explica muito bem :

http://www.ni.com/white-paper/6424/pt/

Um outro lado da gtwvg

Enviado: 20 Nov 2018 12:10
por JoséQuintas
Itamar M. Lins Jr. escreveu:Porque teria que usar alias diferente ?
Pelo que tinha visto, em GUI tinha que usar alias diferente pra uma janela não interferir na outra.
Talvez dependa da LIB GUI.
Itamar M. Lins Jr. escreveu:Se chamar o EXE várias vezes, não é a mesma coisa ?
Não exatamente, porque dá pra deixar variáveis em comum, e até deixar classes em comum.
E com isso, uma janela conversar com a outra.

Multithread são vários processos rodando ao mesmo tempo, podendo ou não estar relacionados entre si.
Em Harbour isso fica tão independente, que um QUIT em um processo não altera o outro.
Até mesmo o debug: eu posso abrir uma janela no debug acompanhando passo a passo, enquanto outra janela roda normalmente, até mesmo com outro debug.

Um outro lado da gtwvg

Enviado: 21 Nov 2018 22:31
por JoséQuintas
Esqueci de dizer:

No geral, a parte chata da GTWVG é o controle dos gráficos, porque é sempre a mesma janela no aplicativo inteiro.
É ficar mostrando/escondendo/destuindo tudo que é gráfico, ao trocar de módulo e em outras situações.
Usando multithread isso simplifica, porque as janelas dos módulos ficam independentes.

Um outro lado da gtwvg

Enviado: 22 Nov 2018 09:57
por JoséQuintas
Mais outra coisa nisso.... na multithread entra a possibilidade de uso de um novo tipo de variável.

THREAD STATIC aPaint := {}

É o mesmo que STATIC mas.... vai existir uma variável STATIC para cada THREAD, ou no caso acima, pra cada janela.

Num dos usos da GTWVG, ela usa WVT_Paint() que pode ficar repintando um array, por exemplo, aPaint.
No uso normal, dos exemplos da GTWVG, ela fica salvando/restaurando essa variável, conforme troca de tela.
Com o uso da variável acima, cada janela/thread vai ter sua variável, então....fim desse "troca/troca".

Ela é útil em outras situações, como por exemplo SAVE/RESTORE Screen, ou outras coisas mais.
É deixar variáveis isoladas em cada thread, automaticamente, pra uma não interferir na outra.
Não confundir com variáveis locais, que por si só já são isoladas.