Eu e meus testes... GTWVG, HWGUI, HMG Extended

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Eu e meus testes... GTWVG, HWGUI, HMG Extended

Mensagem por JoséQuintas »

Um fonte simples, com partes comentadas.

Código: Selecionar todos

THREAD STATIC oGUI

FUNCTION GUI()

   RETURN oGUI

PROCEDURE Main

   LOCAL nOpc := 1

   SetMode(33,100)
   CLS
   DO WHILE .T.
      @ 1, 0 PROMPT "(H)HWGUI"
      @ 2, 0 PROMPT "(3)HMG3"
      @ 3, 0 PROMPT "(E)HMGE"
      @ 4, 0 PROMPT "(O)OOHG"
      MENU TO nOpc

      DO CASE
      CASE LastKey() == 27; EXIT
      CASE nOpc == 1; hb_ThreadStart( { || Test2( "DLGAUTOHWGUI" ) } )
      CASE nOpc == 2; hb_ThreadStart( { || Test2( "DLGAUTOHMG3" ) } )
      CASE nOpc == 3; hb_ThreadStart( { || Test2( "DLGAUTOHMGE" ) } )
      CASE nOpc == 4; hb_ThreadStart( { || Test2( "DLGAUTOOOHG" ) } )
      ENDCASE
   ENDDO

   RETURN

FUNCTION Test2( xFrmName )

   hb_gtReload("WVG")
   DO CASE
   //CASE xFrmName == "DLGAUTOFIVEWIN" ; oGui := FIVEWINClass():New()
   CASE xFrmName == "DLGAUTOHWGUI" ;   oGUI := HWGUIClass():New()
   CASE xFrmName == "DLGAUTOHMGE" ;    oGUI := HMGECLASS():New()
   //CASE xFrmName == "DLGAUTOHMG3" ;    oGUI := HMG3Class():New()
   //CASE xFrmName == "DLGAUTOOOHG" ;    oGUI := OOHGClass():New()
   ENDCASE
   Do( "DLGAUTO" )

   //PostQuitMessage(0)

   RETURN Nil

FUNCTION HB_GTSYS

   REQUEST HB_GT_WVG_DEFAULT

   RETURN Nil
O HBP, incluindo o DLGAUTO

Código: Selecionar todos

testmix.prg
errorsys.prg
-DDLGAUTO_AS_LIB
-I..\source

..\source\frm*.prg
..\source\test.prg
..\source\test_loadsetup.prg
..\source\test_setup.prg
..\source\test_dbf.prg
..\source\test.rc

hbct.hbc
-mt

-L.
-llib_hwgui
#-llib_hmg3
-llib_hmge
#-llib_oohg
gtwvg.hbc
hwgui.hbc
#hmg3.hbc
hmge.hbc
#oohg.hbc
Notem que compilei LIB_HMGE.PRG e LIB_HWGUI.PRG em separado, cada fonte é uma lib diferente.
Como eu digo aqui, misturo LIBs, NO EXE, mas nunca misturo fonte de uma lib com fonte da outra.

O resultado... é o que parece... GTWVG no menu principal, opção (ou opções) de DLGAUTO rodando em HWGUI e HMGE.
Podendo chamar várias vezes cada um.

Hoje alterei isto na HMG Extended, SÓ ISTO

Código: Selecionar todos

         IF ! _HMG_MainWindowFirst   // 2025.07.21 try MT
            SetFocus ( _HMG_MainHandle )
         ENDIF                       // 2025.07.21 try MT
Parece que resolveu o problema do foco em multithread.
testmix.png
Falta um probleminha pra fechar janela.
Ao fechar a primeira janela da HMGE, em qualquer thread, fecha TUDO.

Nota: O nome da lib fica no título, porque senão nem dá pra saber que lib está rodando, dependendo do que for usado.

Nota2: esses testes ajudam a esquecer um pouco a nova tributação, depois volto nela olhando por outra perspectiva.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Eu e meus testes... GTWVG, HWGUI, HMG Extended

Mensagem por JoséQuintas »

Só reforçando outra coisa que já falei por aqui:

GTWVG e HWGUI podem ser misturadas com qualquer outra LIB.
Aqui com HMGE, no aplicativo com FIVEWIN.
Só não dá pra misturar HMG3, HMG Extended, OOHG e FIVEWIN no mesmo EXE, elas tem muita função repetida entre si e não compatíveis.
Quem sabe algum dia....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Eu e meus testes... GTWVG, HWGUI, HMG Extended

Mensagem por JoséQuintas »

Não pensei nisso....

Talvez com isso HMG Extended esteja pronta pra ser usada sozinha com multithread !!!!!
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Eu e meus testes... GTWVG, HWGUI, HMG Extended

Mensagem por JoséQuintas »

Postei lá no fórum da minigui.
Recebi resposta em private que vai ser acrescentado na próxima versão oficial.
Deve melhorar o uso de MAIN WINDOW OFF, com ou sem multithread.

Meus testes são do tipo "vamos alterar pra ver o que dá".
De vez em quando dão resultado.
Acho que deixando zero fica por conta do próprio Windows.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Eu e meus testes... GTWVG, HWGUI, HMG Extended

Mensagem por JoséQuintas »

Enviei vídeo para o youtube do teste.

https://www.youtube.com/watch?v=uqKXXEUI7b0



Só o detalhe de fechar a janela HMG Extended que falta resolver.

A primeira janela de cada thread parece ser considerada a Main, e fechou uma fecha todas.

Tirando isso, tá tudo perfeito, até o foco ficou resolvido com a alteração que eu fiz.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Eu e meus testes... GTWVG, HWGUI, HMG Extended

Mensagem por JoséQuintas »

Acréscimo ao vídeo, talvez não dê pra perceber:

As janelas abrem sempre centralizadas.
Movo cada uma para o menu/thread que a abriu.

As duas janelas de cima são dlgauto usando hwgui.
As duas janelas de baixo são dlgauto usando hmg extended.

Lembram ? multithread é igual vários EXEs.
Cada thread tem sua janela de menu, que acionam outras janelas.
É como ter 1 EXE usando GTWVG, 2 EXEs usando HWGUI e 2 EXEs usando HMG Extended.

O problema que mencionei é como fechar o menu de um EXE, mas ele fechar todos os EXEs.
É fechar o menu de uma thread, e ele fecha todas.

Em HWGUI sem problemas.
Deve ser algo simples em HMGE, mas não tenho conhecimento pra resolver isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder