Eu e meus testes... GTWVG, HWGUI, HMG Extended
Enviado: 21 Jul 2025 22:05
Um fonte simples, com partes comentadas.
O HBP, incluindo o DLGAUTO
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
Parece que resolveu o problema do foco em multithread.
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.
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
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
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
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.