Página 1 de 1

Dúvida sobre GUI no Windows

Enviado: 06 Nov 2013 22:12
por JoséQuintas
Tentei entender a gtwvg mas não entendi.
Ao contrário do que eu pensava, o fonte GUI não é totalmente em PRG, depende de rotinas em C.
Pelo que mexi em VB6, qualquer controle era um FORM - uma janela.
Pra criar um controle era só usar uma janela, a mesma de criar um módulo.
Fiz um simulado básico, mas não tem controle de janela pai/filho, ou retirada das bordas, ou controle de evento, e muito menos a "conversação" entre janelas pra avisar sobre redesenhar a tela.

É um simulado básico.
Pra quem testar, saiba que dentro da janela principal criei 10 janelas filhas, mas as 10 janelas filhas ficam uma encima da outra, precisa mover.
E ao mover, como não tem o aviso entre as janelas, o "redesenho" não é instantâneo.

Só estou querendo saber se estou entendendo errado, ou se as LIBs GUI é que complicam tudo.
Porque se for do jeito que penso, seria só criar os controles com métodos padrão pra poder juntar tudo em qualquer GUI.
Teoricamente, cada janela é um programa, e cada programa é responsável pelo seu próprio desenho/funcionamento, que pode executar uma ação ou se comunicar com as outras janelas.

Segue o teste bem primário, de quem ainda está tentando entender esse troço.

Obs: A propósito... reparem que passo valores entre as threads de um jeito simples: classes.
Obs2: Queria postar isso no grupo harbour, mas não sei se meu inglês vai ser suficiente pra explicar isto direito.

Código: Selecionar todos

#include "hbclass.ch"
#include "inkey.ch"

PROCEDURE Main
   LOCAL oThisWindow, oWindow := Array(10), nCont, hWnd
   SetMode( 25, 80 )
   SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE + HB_INKEY_GTEVENT )
   CLS
   hWnd := wvgSetAppWindow():hWnd
   FOR nCont = 1 TO 10
      oThisWindow := WindowClass():New()
      oThisWindow:oParent := hWnd
      oThisWindow:oMain   := wvgSetAppWindow()
      hb_ThreadStart( { || oThisWindow:Execute() } )
      oWindow[ nCont ] := oThisWindow
   NEXT
   WaitForEsc()
   RETURN

CREATE CLASS WindowClass
   VAR oParent
   VAR oMain
   METHOD Execute()
   END CLASS   
   
METHOD Execute()
   SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE + HB_INKEY_GTEVENT )
   hb_gtReload( "WVG" )
   SetMode( 5, 60 )
   CLS
   wapi_SetParent( wvgSetAppWindow():hWnd, ::oParent )
   WaitForEsc( ::oMain )
   RETURN NIL
   
FUNCTION wapi_SetParent( hWndChild, hWnd )
   CallDll32( "SetParent", "user32.dll", hWndChild, hWnd )
   RETURN NIL   

FUNCTION WaitForEsc( oMain )
   DO WHILE Inkey(0) != K_ESC
      IF oMain != NIL
         oMain:Refresh()
      ENDIF
   ENDDO
   RETURN .T.

Dúvida sobre GUI no Windows

Enviado: 07 Nov 2013 00:08
por alxsts
Olá!

Nada posso dizer sobre a gtwvg, pois nunca vi.

Estou testando a Qt4xHb do Gambeta e a coisa é fantástica!

Quanto ao seu inglês, não se preocupe. se o tradutor do Google. Não é perfeito mas quebra o galho...