Página 1 de 3

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 17:41
por asimoes
Prezados,

Tem como expandir a tela de um sistema compilador com harbour 3.4 para "desktop area" usando GTWVG?

Só estou conseguindo com o GT GTWVT
Ex.:
Com REQUEST HB_GT_WVT_DEFAULT
Com REQUEST HB_GT_WVT_DEFAULT
Exemplo 2
Exemplo 2

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 20:16
por Jairo Maia
Olá Alexandre,

Essa também é uma coisa que persigo há algum tempo com a WVG. Uso uma "gambiarra", e ajusto a medida que vai surgindo novas resoluções. Veja se esse exemplo simples ajuda em algo:

Código: Selecionar todos

/*
  Compilar usando hbmk2 exemplo.prg -gtwvg -gui
*/

//#include "wvtwin.ch"   // acho que em 3.4 é "wvtwin.ch"
#include "hbgtinfo.ch"

Function Main()

 Clear Screen
 
 Wvt_SetGui( .t. )
 
 SetMode( 28, 91 )  // ajuste aqui a melhor resolução
 
 SetColor( "GR+/N" )
 DispBox( 0, 0, MaxRow(), MaxCol(), Nil )
 ConfTela()

 Inkey(0)

Return Nil


Func ConfTela()  // ajusta tamanho da tela

 Local nWidth := Hb_GtInfo(HB_GTI_DESKTOPWIDTH)
 Local nHeight := Hb_GtInfo(HB_GTI_DESKTOPHEIGHT)

 If nWidth = 1024 .And. nHeight = 768
  Wvt_SetFont( "Lucida Console", 28, 12, 0 )
 
 ElseIf nWidth = 1152 .And. nHeight = 864
  Wvt_SetFont( "Lucida Console", 31, 13, 0 )

 ElseIf nWidth = 1280 .And. nHeight = 600
  Wvt_SetFont( "Lucida Console", 21, 15, 0 )

 ElseIf nWidth = 1280 .And. nHeight = 720
  Wvt_SetFont( "Lucida Console", 26, 15, 0 )

 ElseIf nWidth = 1280 .And. nHeight = 768
  Wvt_SetFont( "Lucida Console", 28, 15, 0 )

 ElseIf nWidth = 1280 .And. nHeight = 960
  Wvt_SetFont( "Lucida Console", 35, 15, 0 )

 ElseIf nWidth = 1280 .And. nHeight = 1024
  Wvt_SetFont( "Lucida Console", 38, 15, 0 )

 ElseIf nWidth = 1400 .And. nHeight = 1050
  Wvt_SetFont( "Lucida Console", 39, 16, 0 )
 
 Else  // se nenhuma anterior, seta padrao
  Wvt_SetFont( "Lucida Console", 28, 12, 0 )
 EndIf
 
 Wvt_Maximize()

Return Nil

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:00
por JoséQuintas
Eu uso só a função que postei GTSetupFont().
Quem decide depois é o usuário. Acho que assim fica simples e prático.
Do jeito que ele deixar, é do jeito que volta, só vai precisar do mouse pra isso.

Uma coisa da GTWVG é a seguinte:
Se estiver configurado pra alguma coisa que não cabe na tela, ela reseta para a configuração padrão.

Talvez tenha uma gabiarra mais simples:
Fazer um cálculo direto dividindo a resolução pelas linhas/colunas pra chegar no tamanho do fonte.

E tem o detalhe que mencionei em outro post: tem a hora certa pra alterar a configuração, não pode ser em qualquer hora.

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:18
por JoséQuintas
Ou um jeito relativamente simples:

Código: Selecionar todos

   hb_gtInfo( HB_GTI_MAXIMIZED, .T. )
Com isso o usuário pode clicar no maximizar.

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:21
por JoséQuintas
Sobre o tópico:

Não sei se é boa idéia cobrir o iniciar do Windows.
Se for o caso, talvez configurar o Windows pra "ocultar a barra de ferramentas automaticamente".

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:24
por Jairo Maia
JoséQuintas escreveu:Ou um jeito relativamente simples: hb_gtInfo( HB_GTI_MAXIMIZED, .T. ) Com isso o usuário pode clicar no maximizar.
Sim José, mas a questão é como iniciar o sistema em tela cheia com WVG sem interferência do usuário.

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:28
por Jairo Maia
JoséQuintas escreveu:Não sei se é boa idéia cobrir o iniciar do Windows.
Mas a idéia não é essa. É obter um efeito idêntico ao da GTWVT usando o comando que você colocou acima. Com GTWVT funciona, mas com GTWVG não funciona. A idéia é fazer a tela tomar a área do DeskTop, ficando a barra do Windows disponível (como com GTWVT).

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:35
por JoséQuintas
Tentei por API, altera a janela mas não altera o conteúdo.

Código: Selecionar todos

   wapi_ShowWindow( wvgSetAppWindow():hWnd, SW_SHOWMAXIMIZED )
Talvez se conseguir enviar a "mensagem" pelo Windows, pra maximizar.
Vou testar mais algumas coisas.

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:40
por JoséQuintas
aqui foi:

Código: Selecionar todos

PROCEDURE Main
   SetMode(30,100)
   SetColor("W/B")
   CLS
   wvgSetAppWindow():sendMessage( WIN_WM_SYSCOMMAND, WIN_SC_MAXIMIZE, 0 )
   @ 12, 30 SAY "OLA"
   Inkey(0)
   RETURN

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:47
por JoséQuintas
Só como anotação de como cheguei nisso:
Primeiro pesquisei API do WIndows no google... rs
Depois pesquisei MAXIMIZE nos fontes da gtwvg e apareceu isso.
Como sendmessage está com indicação de função interna ::SendMessage, testei direto na janela da GTWVG wvgSetAppWindow():SendMessage() e deu certo.
Tem horas que é no chute... baseado em alguma coisa... rs
maximize.png

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 21:54
por JoséQuintas
Só um detalhe, que consta em hbgtinfo.ch

Código: Selecionar todos

#define HB_GTI_ALTENTER         62  /* Toggles Alt+Enter as full screen switch (supported by: GTWVT) */
#define HB_GTI_ISFULLSCREEN     63  /* Is the GT windows using the full physical display? (supported by: GTWIN, GTWVT) */

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 22:01
por JoséQuintas
Quanto à gtwvg usar toda tela, o ajuste automático dela não deixa, porque sempre que vai ultrapassar um limite ela retorna ao default.
Mesmo ocultando a barra do iniciar.
iniciar.png
Só resta tentar encontrar aonde desativar o ajuste automático, e deixar totalmente manual.

No meu caso deixo como falei, porque os usuários sempre tem mais aplicativos em uso.

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 22:32
por JoséQuintas
Acho que a solução disso estaria por aqui:

Código: Selecionar todos

static HB_BOOL hb_gt_wvt_FitSize( PHB_GTWVT pWVT )
nesta parte

Código: Selecionar todos

   if( pWVT->bMaximized )
   {
      if( ! SystemParametersInfo( SPI_GETWORKAREA, 0, &wi, 0 ) )
         return HB_FALSE;

      maxHeight = wi.bottom - wi.top - borderHeight;
      maxWidth  = wi.right - wi.left - borderWidth;

      left = 0;
      top  = 0;
   }
Isso fica em gtwvgd.c

Um primeiro teste seria retirar essa subtração de borda.
Não sei se essa borda é a borda da janela, ou se é justamente a borda do desktop.

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 22:47
por JoséQuintas
O que eu tentei mexer foi no espacejamento vertical do texto.
Até consegui o espacejamento, mas....
wvglinespaceing.png

GTWVG - Expandir a tela para Área do Desktop

Enviado: 20 Dez 2015 22:59
por JoséQuintas
Sobre o espacejamento, tentei há dois anos atrás, mas para manter compatibilidade com outras GTs... NÃO
Não sei exatamente que compatibilidade é essa.
It is possible only if we want to compromise the compatibility with other GTs
and also rewrite the whole engine. So my answer is NO.
https://groups.google.com/forum/#!topic ... RhvPGGJqts

Talvez ocupar toda a tela não seja algo que cause compatibilidade, e o Pritpal possa fazer.

Fiz testes aqui mas não foi.

Essa é a parte chata.
Todos os fontes na mão, mas alterar aonde?