X da janela é um Evento?

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

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

X da janela é um Evento?

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

X da janela é um Evento?

Mensagem 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>...
Imagem
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

X da janela é um Evento?

Mensagem por Nascimento »

n no seu hbp esta aparentemente normal acho que é algum pequeno detalhe no seu .prg
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

X da janela é um Evento?

Mensagem 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   
►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)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

X da janela é um Evento?

Mensagem 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
►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)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

X da janela é um Evento?

Mensagem 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
►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)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

X da janela é um Evento?

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