Controlar fechamento de Tela em Modo Texto
Moderador: Moderadores
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Controlar fechamento de Tela em Modo Texto
Bom dia pessoal, estou migrando meus sistemas para harbour, até agora está ficando uma maravilha, correções aqui e ali mas faz parte do processo, como sou novato, então tenho dúvidas, gostaria de saber se é possível controlar o fechamento do sistemas em modo texto quando o usuário clicar no X para fechar janelas, ou seja se ele clicar no X fechamento da janela eu conseguir capturar este evento, pois assim poderia fechar meus arquivos dbf que estão em uso, sei que no modo gráfico isso é perfeitamente possível pois usaria o onRelease do form.
Agradeço a atenção.
Agradeço a atenção.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Controlar fechamento de Tela em Modo Texto
Amigo, veja um exemplo:
Abraços,
Código: Selecionar todos
*****************************************************
* Compile: hbmk2 demo.prg -gtwvg -lhbwin
*****************************************************
#include "hbgtinfo.ch"
#include "wvtwin.ch"
#include "inkey.ch"
Proc Main()
Cls
WVT_SetTitle('Demo Fechar Sistema')
hb_gtInfo( HB_GTI_FONTNAME , "Lucida Console" )
nFontWidth:=Int(hb_gtinfo(HB_GTI_DESKTOPWIDTH)/80)
nFontSize:=Int(hb_gtinfo(HB_GTI_DESKTOPHEIGHT)/25)
hb_gtinfo(HB_GTI_FONTWIDTH, nFontWidth)
hb_gtinfo(HB_GTI_FONTSIZE, nFontSize)
SetMode( MaxRow() + 1, MaxCol() + 1 )
hb_gtinfo( HB_GTI_CLOSABLE, .T. )
hb_gtinfo( HB_GTI_NOTIFIERBLOCK, {|nEvent| FecharSis(nEvent)})
@ 10,10 say "Tente fechar esta janela pelo botão X"
DO WHILE .T.
tk:=inkey(0)
If tk=27
Exit
Endif
ENDDO
Retu
Func FecharSis(eSai)
If eSai==HB_GTE_CLOSE
cMsg := "Deseja Sair do Programa?"
aOpc := { "Sim", "Nao" }
nOp := Alert( cMsg, aOpc)
If nOp==1
Quit
Endif
Endif
Retu NilToledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Controlar fechamento de Tela em Modo Texto
Bom dia Toledo
Fui fazer o teste conforme suas instruções e infelizmente não funcionou, primeiro renomeei o arquivo par janela.prg (normal), quando compilei faltou o arquivo WVTWIN.CH, conseguir numa pasta que tenho do xHarbour, mas mesmo assim falta umas funções que nao conseguir resolver conforme o arquivo de erros em anexo, eu utilizo o harbour da minigui extend versão 3.2.0. Por favor me dá uma luz onde conseguir o arquivo GTWVG, acho que deve ser um .obj ou .c.
Obrigado
Fui fazer o teste conforme suas instruções e infelizmente não funcionou, primeiro renomeei o arquivo par janela.prg (normal), quando compilei faltou o arquivo WVTWIN.CH, conseguir numa pasta que tenho do xHarbour, mas mesmo assim falta umas funções que nao conseguir resolver conforme o arquivo de erros em anexo, eu utilizo o harbour da minigui extend versão 3.2.0. Por favor me dá uma luz onde conseguir o arquivo GTWVG, acho que deve ser um .obj ou .c.
Obrigado
- Anexos
-
compilacao.txt- (1.36 KiB) Baixado 84 vezes
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Controlar fechamento de Tela em Modo Texto
Amigo, não tenho nada contra usar a HMG ou MiniGui Extended para compilar programas Harbour em modo CONSOLE, mas acho que elas foram feitas para desenvolver programas em modo GRÁFICO. A versão do Harbour que vem junto com a HMG/MiniGui Extended tem apenas os arquivos básicos, inclusive muitas pastas do Harbour original não é encontrada, por exemplo a pasta Contrib, onde tem a gtwvg.Cavalo Marinho escreveu:eu utilizo o harbour da minigui extend
Se você observar a pasta LIB do Harbour da MiniGui Extended, você não vai encontrar a gtwvg.lib, então provavelmente esta GTWVG.LIB que você está tentando usar na compilação deste demo deve ser de outra versão do Harbour ou xHarbour.
Tentei compilar aqui a GTWVG para o Harbour + Borland BCC, e deu algumas mensagens de atenção, mas criou a LIB. Ai tentei compilar este demo usando o Harbour da MiniGui Extended e Borland BCC, usando também a GTWVG.LIB que acabei de compilar, não ocorreu nenhum erro na compilação do demo e gerou o EXE, mas quando tento executar não acontece nada, simplesmente volta para o prompt.
Aqui, para compilar programas em modo console, eu sempre uso o Harbour 3.2 junto com a MingW, eu não uso o Borland BCC, então não tenho certeza se a GTWVG vai funcionar corretamente com o Borland BCC.
A compilação de programas Harbour CONSOLE, eu faço sempre conforme este tutorial:
Migrar Clipper para Harbour
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Controlar fechamento de Tela em Modo Texto
Boa Tarde Toledo
Conseguir fazer funcionar o meu sistemas com as alterações sugeridas por você, funciona 100%. compilei com gcc, agora tem um porem qualquer coisa que se vai fazer com o arquivo, ou seja executar, copiar, enviar por email etc o avast detecta como um item suspeito (win:32 Evo-gen), você tem alguma informação sobre este problema?
O interessante é que escaneio o arquivo e o avast informa que não encontrou nenhuma ameaça, agradeço a atenção.
Conseguir fazer funcionar o meu sistemas com as alterações sugeridas por você, funciona 100%. compilei com gcc, agora tem um porem qualquer coisa que se vai fazer com o arquivo, ou seja executar, copiar, enviar por email etc o avast detecta como um item suspeito (win:32 Evo-gen), você tem alguma informação sobre este problema?
O interessante é que escaneio o arquivo e o avast informa que não encontrou nenhuma ameaça, agradeço a atenção.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Controlar fechamento de Tela em Modo Texto
Olá,
Provavelmente você está com algum MalWare que não está sendo dectado pelo antivírus. Exclua seu executável, e antes de compilar novamente, baixe deste link o ADWCleaner e rode em seu computador e tente novamente.
Provavelmente você está com algum MalWare que não está sendo dectado pelo antivírus. Exclua seu executável, e antes de compilar novamente, baixe deste link o ADWCleaner e rode em seu computador e tente novamente.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Controlar fechamento de Tela em Modo Texto
Olá Jairo boa note
passei o ADWCleaner, realmente encontrou malWare, mas continua do mesmo jeito, sempre que compilo o sistema o avast suspeita do arquivo, tenho que colocar na lista de exclusões para poder executar, isso aconteceu depois que comecei a utilizar o gcc com umas modificações que o Toledo me orientou a fazer para controlar o fechamento da janela clicando no X, estou compilando em modo console, quanto as estas modificações estão uma beleza, 100% e quero agradecer ao Colega Toledo pela dica. de qualquer forma eu vou me virando, adiciono na lista do avast e pronto.
passei o ADWCleaner, realmente encontrou malWare, mas continua do mesmo jeito, sempre que compilo o sistema o avast suspeita do arquivo, tenho que colocar na lista de exclusões para poder executar, isso aconteceu depois que comecei a utilizar o gcc com umas modificações que o Toledo me orientou a fazer para controlar o fechamento da janela clicando no X, estou compilando em modo console, quanto as estas modificações estão uma beleza, 100% e quero agradecer ao Colega Toledo pela dica. de qualquer forma eu vou me virando, adiciono na lista do avast e pronto.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Controlar fechamento de Tela em Modo Texto
Olá Cavalo Marinho,
Tenho para mim que ele tem excessos de acusar falso positivo, e jogo a responsabilidade para o usuário, tipo colocando por sua conta e risco na lista de exclusões.
Se aceita uma sugestão, troque pelo AVG.
Particularmente, eu não uso e não indico o Avast. Não questiono sua competência, mas acho que ele tem exageros demais. Por exemplo, tive problemas em clientes que ele bloqueava meu sistema quando ia abrir uma porta COM. Ora, se estou tentanto abrir uma porta COM, existe a possibilidade do aplicativo danificar um equipamento? Acho muito estranho.Cavalo Marinho escreveu:tenho que colocar na lista de exclusões para poder executar
Tenho para mim que ele tem excessos de acusar falso positivo, e jogo a responsabilidade para o usuário, tipo colocando por sua conta e risco na lista de exclusões.
Se aceita uma sugestão, troque pelo AVG.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Controlar fechamento de Tela em Modo Texto
Antivius mal feito é assim mesmo.
Fora as doidices dele com o firewall.
É porque ele não reconhece a sintaxe do EXE, assinatura do EXE com MingW.
Em alguns clientes aqui o avast apagou em mais de 8 maquinas o sistema de emissão de ECF, feito em Delphi, e o meu com Mingw.
Saudações,
Itamar M. Lins Jr.
Fora as doidices dele com o firewall.
É porque ele não reconhece a sintaxe do EXE, assinatura do EXE com MingW.
Em alguns clientes aqui o avast apagou em mais de 8 maquinas o sistema de emissão de ECF, feito em Delphi, e o meu com Mingw.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Controlar fechamento de Tela em Modo Texto
Pessoal a titulo de informação
Descobrir onde está o problema, só nao sei porque.
Estava utilizando a função Wvt_SetTitle() para setar um titulo na janela e também a função Wvt_SetIcon(), fazendo os teste quando retirei o sistema passou sem problema pelo anti-vírus, assim se alguém passar por isso já vai saber, agora não sei se é a lib que está infectada, já escaneei com avast todas as libs da mingw e não foi encontrado nada.
Descobrir onde está o problema, só nao sei porque.
Estava utilizando a função Wvt_SetTitle() para setar um titulo na janela e também a função Wvt_SetIcon(), fazendo os teste quando retirei o sistema passou sem problema pelo anti-vírus, assim se alguém passar por isso já vai saber, agora não sei se é a lib que está infectada, já escaneei com avast todas as libs da mingw e não foi encontrado nada.
Controlar fechamento de Tela em Modo Texto
Caros,
Estou testando a função:
Está acontecendo um problema que eu não estou conseguindo saber como resolver, quando eu uso a função: HB_GTSYS()
O evento de fechar a janela funciona mas não chama a função MyEvent, se eu não usar HB_GTSYS funciona.
A minha função de janela:
Estou testando a função:
Está acontecendo um problema que eu não estou conseguindo saber como resolver, quando eu uso a função: HB_GTSYS()
O evento de fechar a janela funciona mas não chama a função MyEvent, se eu não usar HB_GTSYS funciona.
Código: Selecionar todos
FUNCTION HB_GTSYS()
REQUEST HB_GT_WVG_DEFAULT
REQUEST HB_GT_WVT
REQUEST HB_GT_WGU
REQUEST HB_GT_WVG
RETURN Nil
Código: Selecionar todos
hb_gtInfo(HB_GTI_CLOSABLE, .T. )
hb_gtinfo(HB_GTI_NOTIFIERBLOCK, {|nEvent| MyEvent(nEvent)})
FUNCTION MyEvent(eSai)
If eSai==HB_GTE_CLOSE
cMsg := "Deseja Sair do Programa?"
aOpc := { "Sim", "Nao" }
nOp := hb_Alert( cMsg, aOpc)
If nOp==1
Quit
Endif
Endif
Código: Selecionar todos
FUNCTION IniciaJanela
cName:=Upper(hb_GetEnv("temp"))
wapi_GetLongPathName(cName, @cName)
cTituloJanela:="Testar criação de pasta em "+cName
HB_gtInfo(HB_GTI_FONTNAME, "Lucida Console")
HB_gtInfo(HB_GTI_WINTITLE, cTituloJanela)
HB_gtInfo(HB_GTI_ICONFILE, "P:\GERAL\HARBOUR\HARB_WIN.ICO" )
HB_gtInfo(HB_GTI_CLOSABLE, .T. )
hb_gtinfo(HB_GTI_NOTIFIERBLOCK, {|nEvent| MyEvent(nEvent)})
HB_gtInfo(HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
HB_GtInfo( HB_GTI_MAXIMIZED, .T. )
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Controlar fechamento de Tela em Modo Texto
Eu identifiquei o seguinte quando eu uso REQUEST HB_GT_WVT o evento MyEvent não funciona.
A aplicação precisa deste request para expandir a tela do sistema para as deimensões da área do desktop
A aplicação precisa deste request para expandir a tela do sistema para as deimensões da área do desktop
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Controlar fechamento de Tela em Modo Texto
Tem um detalhe aí que foi esquecido.
O comportamento do Inkey() depende de configuração
Se não me engano a WVT e WVG convertem o fechar janela pra ESC.
Não sei se janela console é considerada uma GT, ou se tem os eventos de uma GT.
O comportamento do Inkey() depende de configuração
Código: Selecionar todos
/* Input event masks */
#define INKEY_MOVE 1
#define INKEY_LDOWN 2
#define INKEY_LUP 4
#define INKEY_RDOWN 8
#define INKEY_RUP 16
#define INKEY_MMIDDLE 32 /* Harbour extension middle button mask */
#define INKEY_MWHEEL 64 /* Harbour extension mouse wheel mask */
#define INKEY_KEYBOARD 128
#define INKEY_ALL ( INKEY_KEYBOARD + INKEY_MOVE + INKEY_LDOWN + INKEY_LUP + INKEY_RDOWN + INKEY_RUP + INKEY_MMIDDLE + INKEY_MWHEEL )
#define HB_INKEY_RAW 256 /* Harbour extension */
#define HB_INKEY_GTEVENT 1024 /* Harbour extension */
#define HB_INKEY_EXT 2048 /* Harbour extension */
#define HB_INKEY_ALL ( INKEY_ALL + HB_INKEY_GTEVENT )
Não sei se janela console é considerada uma GT, ou se tem os eventos de uma GT.
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/
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/
Controlar fechamento de Tela em Modo Texto
Quintas,
Eu não uso os eventos
Set( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE )
Me parece que quando é feito o REQUEST HB_GT_WVT os eventos são controlados por esta GT e não deve ter o método ou controle para o HB_GTI_NOTIFIERBLOCK
Eu não uso os eventos
Set( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE )
Me parece que quando é feito o REQUEST HB_GT_WVT os eventos são controlados por esta GT e não deve ter o método ou controle para o HB_GTI_NOTIFIERBLOCK
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
