Ajuda com GTWVW

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

luiz augusto
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 22 Jul 2019 11:37
Localização: Penha/SC

Ajuda com GTWVW

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com GTWVW

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
luiz augusto
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 22 Jul 2019 11:37
Localização: Penha/SC

Ajuda com GTWVW

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com GTWVW

Mensagem 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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
luiz augusto
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 22 Jul 2019 11:37
Localização: Penha/SC

Ajuda com GTWVW

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com GTWVW

Mensagem 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()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com GTWVW

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
luiz augusto
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 22 Jul 2019 11:37
Localização: Penha/SC

Ajuda com GTWVW

Mensagem 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
frazato
Usuário Nível 3
Usuário Nível 3
Mensagens: 219
Registrado em: 08 Jul 2004 07:45

Ajuda com GTWVW

Mensagem 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()
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com GTWVW

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com GTWVW

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com GTWVW

Mensagem por JoséQuintas »

Corrigindo:
Em nenhum dos dois casos.
O nome na janela sugere que com GTWVG a GTWVW não funcionou.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
luiz augusto
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 22 Jul 2019 11:37
Localização: Penha/SC

Ajuda com GTWVW

Mensagem 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
luiz augusto
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 22 Jul 2019 11:37
Localização: Penha/SC

Ajuda com GTWVW - RESOLVIDO

Mensagem 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
Responder