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