Página 1 de 1

Ajuda com GTWVW

Enviado: 19 Mar 2020 10:40
por luiz augusto
Bom dia,

Uso o comando abaixo pra gerar a janela principal do sistema:
nCurWindow := WVW_nOpenWindow( '', 00, 00, ScreenWidth, ScreenHeight, WS_CAPTION|WS_MINIMIZEBOX|WS_MINIMIZE|WS_MAXIMIZE, -1 )

Quando informo -1 no ultimo parametro, cria duas telas;
Quando informo 1 no ultimo parametro, mostra uma mensagem de erro : Invalid Parent Window. Ao sair da mensagem, abre o sistema normalmente e não gera a segunda tela, somente uma. E isso, é exatamente o que preciso.

Olhando no fonte da GTWVW, na linha onde é gerada a mensagem de erro, fiquei confuso, não sou "expert" em C, mas conforme a definição do comando para o ultimo parametro:
*nParentWin is parent window of the new on we're about to open.
* default is: current window (in Standard Mode)
* last window (in MainCoord Mode)
* If you want the new window to not have parent,
* pass -1 as nParentWin.
*
Se entendi correto, o -1 não abriria a segunda janela, mas abre. Se passo 1, mostra a mensagem de erro:

if (iParentWin > (INT)s_pWvwData->s_usNumWindows-1)
{
MessageBox( NULL, TEXT("Invalid Parent Window"),
"Error", MB_ICONERROR );
hb_retni( 0 );
return;
}

Pensei em alterar e não mostrar mais a mensagem, porque não fica legal toda vez que abrir o sistema, mostrar mensagem de erro. Algum colega pode me ajudar com a rotina e a nova compilação da GTWVW?

Agradeço pela ajuda,
Luiz Augusto
Penha - SC

Ajuda com GTWVW

Enviado: 19 Mar 2020 11:24
por JoséQuintas
Já tentou usar o parâmetro correto ?
o parâmetro é uma indicação de janela, ou indica -1 pra ser livre ou indica o handle de uma janela existente.
Indicou 1 porque? existe a janela com handle 1 ?

E WVW tem manual, inclusive o único disponível em português:

https://harbour.github.io/doc/pt-br/gtw ... openwindow

Ajuda com GTWVW

Enviado: 19 Mar 2020 11:38
por luiz augusto
Obrigado por responder Quintas,

Na verdade minha tela é a 0(zero), janela principal do sistema. Acontece que se colocar -1, cria duas telas, uma com todas as informações do sistema e outra em branco, quando coloco -1 ou se não coloco nada no parametro. Agora, se coloco 1, não cria a segunda tela, mas mostra a mensagem de erro, e mesmo mostrando a mensagem, o sistema funciona normal.

Luiz

Ajuda com GTWVW

Enviado: 19 Mar 2020 13:40
por JoséQuintas
luiz augusto escreveu:Na verdade minha tela é a 0(zero), janela principal do sistema.
Acontece que se colocar -1, cria duas telas, uma com todas as informações do sistema e outra em branco
Na verdade você já tem janela a janela default, mas mesmo assim está criando outra.

Por acaso indicou -gui ? se não indicar vai aparecer a janela do console, será que não é essa é problema?

Ajuda com GTWVW

Enviado: 19 Mar 2020 16:59
por luiz augusto
Quintas escreveu:
Por acaso indicou -gui ? se não indicar vai aparecer a janela do console, será que não é essa é problema?

Uso xbuildw.exe pra compilar meus sistemas, em xharbour, este em particular é modo console com gtwvw.
Informei -gui na compilação e -1 no parametro e continua aparecendo a segunda tela. Se colocar 1 no parametro, não mostra a segunda tela mas mostra a mensagem de erro. Só vejo uma maneira de resolver isso, alterar no fonte da gtwvw e recompilar.

/*
if( iParentWin > ( wvw->iNumWindows - 1 ) )
{
hb_errRT_TERM( EG_ARG, 10003, "Invalid parent window", HB_ERR_FUNCNAME, 0, 0 );
hb_retni( 0 );
return;
}
*/
dai não mostra a mensagem e nem a segunda tela.

Luiz

Ajuda com GTWVW

Enviado: 19 Mar 2020 17:36
por JoséQuintas
É que está querendo deixar sem a janela principal, esse é o problema.
Porque não pode ser a própria janela principal como abertura?

Outra opção:
Criar só a primeira janela como GTWVG, e deixar invisível, uma Main() invisível.

PROCEDURE HB_GTSYS
REQUEST HB_GTWVG_DEFAULT
RETURN

Não use em Main() nem setmode(), nem nada que use tela.

E caso feche sozinha:

PROCEDURE Main()
....

hb_TheadWaitForAll()

Ajuda com GTWVW

Enviado: 19 Mar 2020 17:40
por JoséQuintas
Só explicando melhor:

A GTWVW abre... pronto tá lá a janela principal

Aí cria uma nova janela... ficam duas.

Se não tiver janela principal... talvez o aplicativo feche sozinho.
A GTWVG, é porque conheço, ela pode ser a janela principal e ficar escondida.

Se não usar multithread, sem problemas.
Se usar multithread, talvez fecha sozinha tudo, por isso o hb_ThreadWaitForAll, somente SE acontecer isso.

Tá querendo usar diferente... acaba precisando de alternativas diferentes.

Ajuda com GTWVW

Enviado: 20 Mar 2020 10:14
por luiz augusto
Bom dia Quintas,

Não quero usar diferente, o que eu quero é desabilitar o button - ( minimizar ) e maximizar e o X da saida( esse eu consegui ), usando estes comandos:

// Disable MAXIMIZE button
WVW_EnableMaximize( nCurWindow, .f. )

// desabilita o X para fechar a janela
WVW_NoClose( nCurWindow )

Para o minimizar não achei como fazer; mas o comando WVW_nOpenWindow() faz isso, o unico inconveniente é a mensagem de erro que aparece quando abro o sistema.

É isso,
{}´s
Luiz

Ajuda com GTWVW

Enviado: 20 Mar 2020 16:00
por frazato

Código: Selecionar todos

*********************************************************
FUNCTION AbreJanela( cTitulo, nLI, nCI, nLF, nCF, nTipo )
*********************************************************
   local nWin
   default nTipo to WS_CAPTION

   if ( nWin := WVW_nOpenWindow( cTitulo, nLI, nCI, nLF, nCF, nTipo ) ) == 0
      Alerta("Erro na criacao da janela " + cTitulo+;
             'Favor verificar o tamanho da resolucao da Tela!'+;
             'Linha Final:'+str(nLF,11))
      return 0
   endif
RETURN nWin

//
// FUNCAO     : FechaJanela()
// PARAMETROS : -
// DESCRICAO  : Jeito diferente de chamar WVW_lCloseWindow()
// RETORNO    : .T. se conseguiu fechar janela, caso contrario .F.
//
**********************
FUNCTION FechaJanela()
**********************
RETURN WVW_lCloseWindow()

Ajuda com GTWVW

Enviado: 20 Mar 2020 20:59
por JoséQuintas
Só assim

Código: Selecionar todos

PROCEDURE MAIN

   WVW_NOpenWindow( "teste", 0, 0, 24, 79 )
   @ 3, 3 SAY "ola mundo"
   Inkey(0)
   wvw_lCloseWindow()

PROCEDURE HB_GTSYS

   REQUEST HB_GT_WVG_DEFAULT

   RETURN
Compilar usando hbmk2 arquivo.hbp gtwvg.hbc gtwvw.hbc
gtwvw.png

Ajuda com GTWVW

Enviado: 20 Mar 2020 21:02
por JoséQuintas
Assim não vai:

Código: Selecionar todos

PROCEDURE MAIN


   WVW_NOpenWindow( "teste", 0, 0, 24, 79 )
   @ 3, 3 SAY "ola mundo"
   Inkey(0)
   wvw_lCloseWindow()

PROCEDURE HB_GTSYS

   REQUEST HB_GT_WVW_DEFAULT

   RETURN
gtwvw2.png

Ajuda com GTWVW

Enviado: 21 Mar 2020 10:34
por JoséQuintas
Corrigindo:
Em nenhum dos dois casos.
O nome na janela sugere que com GTWVG a GTWVW não funcionou.

Ajuda com GTWVW

Enviado: 31 Mar 2020 12:35
por luiz augusto
Boa tarde,

Obrigado pelas respostas, mas nada funcionou, porém, se alguem puder alterar as linhas abaixo na GTWVW.C e recompilar a lib, dai, vai resolver.
Alterar aqui:
if( iParentWin > ( wvw->iNumWindows - 1 ) )
{
hb_errRT_TERM( EG_ARG, 10003, "Invalid parent window", HB_ERR_FUNCNAME, 0, 0 );
hb_retni( 0 );
return;
}

Grato,
Luiz

Ajuda com GTWVW - RESOLVIDO

Enviado: 26 Out 2020 14:45
por luiz augusto
Boa tarde,

Depois de muita pesquisa( tentativa erros e acertos ), finalmente consegui resolver o problema, das duas telas e dos buttons minimize, maximize e cancel( button X ), como segue:

- Não usar o comando WVW_nOpenWindow( cTitulo, nLI, nCI, nLF, nCF, nTipo ), porque ele abre a segunda janela;

- Abaixo a configuração correta:

nCurWindow := WVW_nNumWindows()-1 // == 0, Main Window

// não deixa fechar sua aplicação com ALT+F4
WVW_SetAltF4Close( .f. )

// Disable MAXIMIZE button
WVW_EnableMaximize( nCurWindow, .f. )

WVW_Maximize( nCurWindow )

// desabilita o X para fechar a janela
WVW_NoClose( nCurWindow )

// Con titulo, sin X ni Menu
WVW_SetWinStyle( nCurWindow, DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION )

WVW_SetTitle( 0, "Titulo do sistema" )

Utilizando desta forma, abre somente a janela principal, sem os buttons.

Boa Semana,
Luiz Augusto