Página 1 de 1

Comportamento diferente em versões diferentes da Mingui

Enviado: 28 Fev 2017 12:24
por FFreire
Prezados...

Como ja relatei aqui, me utilizo ainda de CONSOLE e GUI, ou seja, conforme vou desenvolvendo a parte GUI, vou excluindo o CONSOLE, até ai beleza !!!
Aí para chamar as telas consoles, faço da seguinte forma:

Código: Selecionar todos

#include "wvtwin.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#Include 'minigui.ch'
#include 'inkey.ch'

REQUEST HB_GT_WVT

//--------------------------
FUNCTION CH_CONSOLE(b_Block)
//--------------------------

LOCAL zret

DEFINE WINDOW Trava;
       AT 0,0 ;
       WIDTH 100 HEIGHT 30;
       TITLE '.Sagrio.';
       MODAL;
       NOSIZE;
       NOSYSMENU;
       ON GOTFOCUS FocarJanela('Sagrio');
       ON INIT { || TravaSaida('Trava'), Jan_Console(b_Block,@zret) }
		 
       SetaTeclas('Trava')

       ON KEY ALT+V OF Trava ACTION COLAR_ALT_V()

END WINDOW

CENTER WINDOW Trava
ACTIVATE WINDOW Trava

RETURN(zret)

//--------------------------
STATIC FUNCTION COLAR_ALT_V
//--------------------------

KEYBOARD( Hb_GtInfo( HB_GTI_CLIPBOARDDATA ) )

RETURN(NIL)

//---------------------------------------
STATIC FUNCTION Jan_Console(b_Block,_ret)
//---------------------------------------

LOCAL pGT, cFont

PRIVATE pNewGT

pNewGT := HB_GTCREATE("WVT")
pGT    := HB_GTSELECT(pNewGT)

HB_GTINFO( HB_GTI_FONTSEL, "Lucida Console")
HB_GTINFO( HB_GTI_FONTWIDTH, 12 )
HB_GTINFO( HB_GTI_FONTSIZE, 28)
HB_GTINFO( HB_GTI_MAXIMIZED      , .F. ) // Maximizar a tela
HB_GTINFO( HB_GTI_RESIZABLE      , .F. ) // Não usar botões de redimensionamento
HB_GTINFO( HB_GTI_ALTENTER       , .F. ) // Não usar ALT+Enter
//HB_GTINFO( HB_GTI_CLOSABLE       , .F. ) // inibe o fechamento no X
HB_GTINFO( HB_GTI_CLOSEMODE, 2 ) // inibe o fechamento no X, alt+f4 e menu fechar
HB_GTINFO( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_FONT ) /* aumenta o tamanho da letra proporcionalmente */
HB_GTINFO( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
HB_GTINFO( HB_GTI_WINTITLE, "Sagrio" )
HB_GTINFO( HB_GTI_ICONRES, "AppIcon" )
HB_GTINFO( HB_GTI_ISFULLSCREEN, .F. ) // Deixar a tela cheia - estilo DOS
HB_GTINFO( HB_GTI_SELECTCOPY, "Selecionar e Copiar - Para COLAR ALT+V" ) // Coloca o texto no menu do windows

_ret := EVAL( b_Block )

pNewGT := NIL
HB_GTSELECT(pGT)

RELEASE WINDOW Trava

RETURN(NIL)

#DEFINE GW_OWNER     4
#DEFINE GW_HWNDFIRST 0
#DEFINE GW_HWNDNEXT  2

//----------------------------------
STATIC FUNCTION FocarJanela(zjanela)
//----------------------------------

LOCAL aTitulos, nPos

aTitulos := RetJanelas( GetForegroundWindow() )
nPos     := aScan( aTitulos, {|x| x[1] == zjanela } )

IF nPos > 0
   SetForeGroundWindow( aTitulos[nPos,2] )
END

RETURN(NIL)

//----------------------------------
STATIC FUNCTION RetJanelas(nJanelas)
//----------------------------------

LOCAL aBusca  := {}
LOCAL cTitulo := ""
LOCAL nJan    := GetWindow( nJanelas, GW_HWNDFIRST ) // Pega primeira janela

WHILE nJan <> 0
   cTitulo := GetWindowText( nJan )
   IF GetWindow( nJan, GW_OWNER ) = 0 .AND. ; // Se é uma janela owner
      IsWindowVisible( nJan ) .AND. ;  // Se é uma janela visivel
      nJan != nJanelas .AND. ;         // Se não é esta aplicação
      !EMPTY( cTitulo )                // Janela sem título
      // Adiciona na matriz de janelas ativas
      AADD( aBusca, { cTitulo, nJan } )
   END
   nJan := GetWindow( nJan, GW_HWNDNEXT ) // Pega a proxima janela
END
RETURN(aBusca)
Ou seja, chamo uma janela GUI e a partir dela o console, tudo funcionando sem problemas, isso com a versão da minigui extend de fev/16, depois dessa versão, o que acontece é o seguinte, vejam que em ON GOTFOCUS eu tenho uma função que foca a janela console, que estava funcionando perfeitamente, mas se atualizo a versão do minigui extend para uma versão superior a fev/16, a janela console fica piscando, como se perdesse o foco e focasse de novo, coloquei até um contador (foca 814x) até parar na janela gui, muito estranho, isso acontece nas duas ou três primeiras vezes, dai se, eu dentro do console chamar uma janela gui, aparentemente volta ao normal, o mais estranho é que não existe alteração de código, só estou compilando/linkando com uma versão nova da minigui extend. Ja debuguei e vi que a reação da função de focarjanela é a mesma em qualquer versão da minigui, ja o ON GOTFOCUS nas versões posteriores, é executado diversas vezes, criando um loop até parar, depois volta ao normal, mas se não chamar um relatório, por exemplo, que ja é totalmente GUI, não para, se sair e entrar no CONSOLE, toda a vez fica piscando.
o que poderia ser ? alguém poderia me ajudar ?

Aguardo...

Comportamento diferente em versões diferentes da Mingui

Enviado: 28 Fev 2017 13:05
por FFreire
Só para acrescentar, talvez estejam perguntando, pq criar uma janela MODAL, antes de chamar o console, ja respondendo, é que dessa forma, não permito que por exemplo, o usuário entre em um cadastro e ao mesmo tempo entre em outro cadastro, pois a modal tem exclusividade, não permitindo isso, enquanto não for fechada.

Comportamento diferente em versões diferentes da Mingui

Enviado: 28 Fev 2017 17:03
por asimoes
Olá,

Você tá usando Minigui 17-02 ok?
Com BCC 5 ?

Só para saber.

Comportamento diferente em versões diferentes da Mingui

Enviado: 28 Fev 2017 18:04
por FFreire
Na verdade, estou usando BCC + Minigui Extended 16.02, pois as posteriores se eu atualizar, dá o erro que narrei acima !

Comportamento diferente em versões diferentes da Mingui

Enviado: 01 Mar 2017 21:42
por JoséQuintas
Está usando com ou sem multithread?
Está compilando com -mt ?
Colocou algo pra aguardar a execução da GTWVT?

Estranhei usar hb_gtCreate() e não hb_gtReload()

Há diferença entre usar a janela padrão da WVT/WVG ou a janela "recarregada".

A "recarregada" se encerra automaticamente com o módulo, e a padrão é a principal, que ficaria sempre aberta.
No caso de multithread, envolve mais precauções, que pode deixar fixas no aplicativo, sem ficar repetindo em cada módulo.
Mas executaria independente do aplicativo, o que evita interferência.

Comportamento diferente em versões diferentes da Mingui

Enviado: 04 Mar 2017 10:02
por FFreire
- Estou usando sem multithread

- Compilo sem -mt e sim com -st
# ---------------------------
# MultiThread
# ---------------------------
#-mt
-st
Mas ja fiz o teste com e sem e fica na mesma.

Não coloquei nada para aguardar a execução, apenas abro uma janela GUI modal e a partir dela executo o GT, para que o usuário não consiga acessar outra coisa.

Como disse, tudo funciona muito bem, nas versões fev/16 para trás, de fev/16 em diante, se mudar a versão, o ON GOTFOCUS fica perdido, muito estranho isso.

Comportamento diferente em versões diferentes da Mingui

Enviado: 21 Abr 2019 14:15
por syslink
achei interessante o post so q uso hmg344
to atualizano meu app de console pra grafico
alguem tem um codigo que execute primeiro o define window main e a partir dele atraves popup menu item chame as telas antigas em console e ao fechar que nao encerre o app e sim volte ao menu define window main ?