Ola!
No Harbour, exemplo é que não falta para usar MT.
Não tem nada adicional.
Se usar MT sempre será do Harbour neste caso.
Agora vc vai testar isso usando uma das GT's do Harbour para Linux. PushButtons, Radio Group, Buttons, etc... Isso é o desenho das suas telas com WVG.
Ou usar a Hwgui se quer gráfico nativo VIA, GTK.
A GTWVG é para Windows.
Basta olha o NetIO ai que vc já usa e não usa GT nenhuma
#include "error.ch"
FUNCTION netio_MTServer( nPort, cIfAddr, cRootDir, xRPC, ;
cPasswd, nCompressLevel, nStrategy, ;
sSrvFunc )
LOCAL pListenSocket, lRPC
LOCAL oError
IF sSrvFunc == NIL
sSrvFunc := @netio_Server()
ENDIF
IF hb_mtvm()
SWITCH ValType( xRPC )
CASE "S"
CASE "H"
lRPC := .T.
EXIT
CASE "L"
lRPC := xRPC
EXIT
OTHERWISE
xRPC := NIL
ENDSWITCH
pListenSocket := netio_Listen( nPort, cIfAddr, cRootDir, lRPC )
IF ! Empty( pListenSocket )
hb_threadDetach( hb_threadStart( @netio_srvloop(), pListenSocket, ;
xRPC, sSrvFunc, ;
cPasswd, nCompressLevel, nStrategy ) )
ENDIF
ELSE
oError := ErrorNew()
oError:severity := ES_ERROR
oError:genCode := EG_UNSUPPORTED
oError:subSystem := "HBNETIO"
oError:subCode := 0
oError:description := hb_langErrMsg( EG_UNSUPPORTED )
oError:canRetry := .F.
oError:canDefault := .F.
oError:fileName := ""
oError:osCode := 0
Eval( ErrorBlock(), oError )
ENDIF
RETURN pListenSocket
Saudações,
Itamar M. Lins Jr.