Página 2 de 2

X da janela é um Evento?

Enviado: 20 Jun 2014 13:18
por cjp
Bencz, agora não está executando minha_função(). Eu salvei o teu código exatamente do jeito que está num arquivo teste.prg e compilei hbmk2 teste.prg. Precisa de alguma lib?

Josivan, tua função funcionou aqui perfeitamente. Mas não acertei colocar isso no meu programa. Quando rodo só a tua função funciona sem problema. Mas não consegui rodá-la de dentro do meu programa. Não sei se é algum problema na compilação com a gtwvt. Estou compilando assim:

Código: Selecionar todos

# coloque aqui suas libs, precedidas pela letra "l" (minúscula):
-lxhb
-lhbwin
-lhbtip
-lhbct
-lhbHPdf
-lhbZebra
-lhbmisc
-gui
-gtwvt
rddsql.hbc 
sddodbc.hbc

# coloque aqui os parâmetros de compilação:
-quiet
-jobs=4
-oAGENDA

# coloque aqui seus arquivos PRGs:
AGENDA.PRG
COMUNS.PRG
banco.prg
contag.prg
agtel.prg
agcom.prg
errors2.prg
getsys.prg
Tem algo errado?

X da janela é um Evento?

Enviado: 20 Jun 2014 14:11
por bencz
compilei com a ultima versão do HB, e foi normal... veja se não ficou faltando o #include <windows.h> ( quando eu copiei o meu código do forum, veio faltando o <windows.h>...

X da janela é um Evento?

Enviado: 20 Jun 2014 20:12
por Nascimento
n no seu hbp esta aparentemente normal acho que é algum pequeno detalhe no seu .prg

X da janela é um Evento?

Enviado: 23 Dez 2015 08:52
por asimoes
Pessoal,

Voltando ao assunto esou tentando isso, mas não está dando certo. É possível funcionar?

Código: Selecionar todos

hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @XDaJanela())

FUNCTION XDAJANELA()
   
   DO WHILE .T.
      nKey := Inkey(0, 128 + HB_INKEY_GTEVENT )
      IF nKey = HB_K_CLOSE
         MyEvent()
      ENDIF
      ThreadSleep( 500 )
   ENDDO   
RETURN Nil   

X da janela é um Evento?

Enviado: 23 Dez 2015 14:49
por asimoes
Acho que consegui resolver o problema do X da janela usando a HB_GT_WVT

Ex.:

Código: Selecionar todos

#include "hbgtinfo.ch"
FUNCTION MAIN
   HB_IdleAdd( {|| XDaJanela() } )
RETURN Nil

FUNCTION XDAJANELA()
  DO WHILE .T. 
      nKey := Inkey(.01, 128 + HB_INKEY_GTEVENT )
      IF nKey = HB_K_CLOSE
         MyEvent()
      ENDIF
  ENDDO   
RETURN Nil

FUNCTION MyEvent(eSai)
     If hwg_MsgYesNo("Deseja sair do Programa?")
        Quit
     Endif
RETURN Nil

INIT FUNCTION AppSetup()
  REQUEST HB_LANG_PT
  REQUEST HB_CODEPAGE_PTISO
  REQUEST HB_CODEPAGE_PT850
  HB_LANGSELECT("PT")
  HB_CDPSELECT( "PTISO" ) 
  SET TYPEAHEAD TO 0
  SET INTENSITY ON
  SET SCOREBOARD OFF
  SET DELETED ON
  SET SAFETY OFF
  SET ESCAPE ON
  SET DATE FORMAT "DD/MM/YYYY"
  SET DELIMITERS TO
  SET EXCLUSIVE OFF
  SET WRAP ON
  SET EPOCH TO 1920
  SET OPTIMIZE ON
  SET AUTOPEN ON
  SET MESSAGE TO 23 CENTER
  REQUEST DBFNTX
  REQUEST DBFCDX
  RddSetDefault("DBFCDX")
  SETMODE(25, 80)
  SetColor("W+/B")
  CLS
  SetColor("W+/B")
  IniciaJanela()
RETURN Nil 

FUNCTION IniciaJanela
   cTituloJanela:="Testar fechar janela no X"
   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, .F. )
   HB_gtinfo(HB_GTI_NOTIFIERBLOCKGUI, {|nEvent| MyEvent(nEvent)})
   HB_gtInfo(HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
   HB_GtInfo(HB_GTI_MAXIMIZED, .T. )
   //HB_GtInfo(HB_GTI_ISFULLSCREEN, .T.)
RETURN Nil

FUNCTION HB_GTSYS()
   REQUEST HB_GT_WVT_DEFAULT
   REQUEST HB_GT_WVT
   REQUEST HB_GT_WGU
   REQUEST HB_GT_WVG
RETURN Nil

X da janela é um Evento?

Enviado: 23 Dez 2015 15:20
por asimoes
Correção do post anterior:

Código: Selecionar todos

#include "hbgtinfo.ch"
FUNCTION MAIN
   Set( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE + HB_INKEY_GTEVENT)
   HB_IdleAdd( {|| XDaJanela() } )
   cGet := Space(10)
   @ 10, 00 SAY "TESTE COM GET" GET cGet
   READ
RETURN Nil

FUNCTION XDAJANELA()
   nKey := Inkey(0) 
   KeyBoard Chr(nKey)
   IF nKey = HB_K_CLOSE
      MyEvent()
      Clear TypeAhead
   ENDIF
RETURN Nil

X da janela é um Evento?

Enviado: 23 Dez 2015 17:35
por asimoes
Mais ajustes:

Código: Selecionar todos

FUNCTION XDAJANELA()
   DO WHILE ( nKey := Inkey( 0, hb_bitOr( Set( _SET_EVENTMASK ), HB_INKEY_EXT ) ) ) == 0
   ENDDO
   hb_keyIns( nKey )
   IF nKey = HB_K_CLOSE
      fClose(nHandle)
      MyEvent()
      Clear TypeAhead
   ENDIF
RETURN Nil