SetKeyMouse da VLIB não funciona com Harbour

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

Moderador: Moderadores

rrb info
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 20 Jul 2015 16:17
Localização: barretos/sp

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por rrb info »

Em primeiro lugar gostaria de parabenizar pelo excelente serviço prestado à comunidade de programadores, e agradecer pois tudo que aprendi sobre migrar de CLIPPER para HARBOUR foi no forum do PC TOLEDO.
Venho do clipper 5.2 ( em uma maquina com WINDOWS 7 / 32 BITS ) e a muito tempo não programo. agora um cliente antigo precisa de um sistema meu em 64 bits.
Ja baixei o harbour 3.0.35 (conforme indicacao pesquisada em seu site) e tambem ja baixei do harbour 3.2.0
Ja consegui compilar o meu sistema ( SEM ERRO ALGUM ) nas 2 versões do harbour que citei ( modo console ) tanto usando o HMG como pelo prompt comando usando o HBMK2, só nao sei porque a funcao setkeymouse que uso para associar uma area da tela a uma tecla de funcao nao funciona.
Se aciono a tecla manualmente da certo, se clico com o mouse na area desejada nada acontece.

Exemplo do programa TESTE.PRG

Código: Selecionar todos

#include "vlib.prg"

***********
func main()
***********

cls
setmode(25,80)
set eventmask to 1002

set key -15 to rot() && Shift F6
setkeymouse(-15, { 10,13,0,3 })

a=space(05)
@ 10,0 to 13,3 && quadrado na area da tela para clicar com o mouse e que nao funciona

@ 14,0 get a
read

return nil

********
func rot
********

clear
? "deu certo"
wait
clear gets
return(.t.)

Exemplo do BAT no prompt de comando
@echo off
set path=c:\hmg.3.0.35\harbour\bin;c:\hmg.3.0.35\include;c:\hmg.3.0.35\mingw\bin;%path%
set hb_compiler=mingw
hbmk2 -oteste -inc -compr=yes -quiet -rebuild -lxhb -lhbwin -lhbct -gui teste.prg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por JoséQuintas »

Infelizmente não dá pra saber se 1002 está correto. Por coincidência é o código do click do mouse, que se for essa a intenção está errado.

Tente:

Código: Selecionar todos

#include "inkey.ch"
Set( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE )
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
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por Toledo »

Amigo, encontrei aqui um DEMO da VisualLIB para Harbour, onde esta função SetKeyMouse() funciona certinho, veja no DEMO em anexo as teclas F1 e F10.

Obs.: não sei de onde eu peguei este DEMO, então os créditos vão para o autor desconhecido.

Abraços,
Anexos
demovisuallib.zip
(1.17 MiB) Baixado 154 vezes
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
rrb info
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 20 Jul 2015 16:17
Localização: barretos/sp

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por rrb info »

Boa noite pessoal.
Jose Quintas, 1002 equivale a K_LBUTTONDOWN e com este comando funciona tudo no meu programa ( MENU, GET, ETC ) só o setkeymouse() não dá o resultado de marcar uma área da tela.
Toledo, o ZIP que me indicou é o que uso, com a diferença que no final da VLIB, antes de #INCLUDE "HBAPI.H" tive de incluir #INCLUDE "HBGTWVW.H" e #INCLUDE "HBGTWVT.H" senão dá erro nas linhas 1025 e 1026 de HBAPI.H. O exemplo do F1 e F10 é o que preciso, só que ao compilar em HARBOUR o DEMO, não funciona ( em CLIPPER fica OK ), já que a VISUAL2.CH pelo que vi no FORUM não funciona com HARBOUR, o máximo que consegui quando coloquei ela foi a tela ficar cinza e o programa trava.
Então pergunto, em modo console, sem nada de modo gráfico, não existe outro comando que seja do HARBOUR que posso colocar e que substitua o setkeymouse()
Grato a todos
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por JoséQuintas »

Foi isso que eu quis dizer.
Opções, direto do inkey.ch:

Código: Selecionar todos

#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 )
A primeira coisa é verificar se está usando o código correto de evento.
Não é indicar o click do mouse que faz liberar o click do mouse.
E à primeira vista, 1002 é liberar um conjunto dessas coisas - ou ser considerado inválido e não fazer nada.

Alternativas:
Uma delas seria configurar o InkeyFilter pra uma rotina sua.
Ao teclar com o mouse, comparar com todas as regiões definidas e já retornar a tecla equivalente.
Provavelmente igual já tem no fonte.

Talvez também um SET KEY para o equivalente ao click do mouse.
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
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por Toledo »

rrb info escreveu:O exemplo do F1 e F10 é o que preciso, só que ao compilar em HARBOUR o DEMO, não funciona ( em CLIPPER fica OK )
Amigo, no ZIP que está em anexo na minha mensagem anterior já tem o DEMO.EXE que eu compilei com o Harbour 3.2, execute ele e vai notar que está funcionando certinho quando clica em cima do "F1 Sobre" e "F10 Sair", então funciona sim compilado com o Harbour.

Dentro do ZIP tem também o arquivo compile.bat que eu usei para compilar este DEMO.

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
rrb info
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 20 Jul 2015 16:17
Localização: barretos/sp

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por rrb info »

Bom dia Toledo
Tentei recompilar aqui o exemplo que me enviou mais vi que não tenho GTWVW.LIB
Tentei gerar usando HBMK2 GTWVW.HBC e criou LIBGTWVW.A e não GTWVW.LIB
A mensagem que dá ao final do comando acima é:
hbmk2: Processando opcoes do ambiente: -compiler=mingw
hbmk2: Alvo atualizado: lib\win\mingw\libgtwvw.a

Por favor, já que você tem ela, não dá para envia-la para mim, pois estou vendo que os comandos que podem estar faltando para o setkeymouse() funcionar podem ser exatamente os vários comandos wvw_??? que tem no demo.prg
Se tiver também GTWVT.LIB e outras, desde já agradeço

Abraço
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por Toledo »

rrb info escreveu:Tentei recompilar aqui o exemplo que me enviou mais vi que não tenho GTWVW.LIB
Tentei gerar usando HBMK2 GTWVW.HBC e criou LIBGTWVW.A e não GTWVW.LIB
Amigo, você está compilando com o MingW, neste caso os arquivos de bibliotecas não tem a extensão LIB, tem um prefixo LIB e a extensão é .A (libgtwvw.a).

Então, se você entrar na pasta \lib\win\mingw\ do seu Harbour, vai notar que já existe a LIB libgtwvw.a e provavelmente a libgtwvt.a.
rrb info escreveu:Ja baixei o harbour 3.0.35
Acho que você queria dizer que baixou a HMG 3.0.35 (MiniGui), neste caso, a versão do Harbour que vem com esta versão da MiniGui é a 2.0.0, é muito antiga. Hoje temos o Harbour 3.2 ou 3.4.
Nesta versão do Harbour 2.0.0 não tem a libgtwvw.a, então se você for compilar com a HMG 3.0.35 este DEMO da VisualLIB, não vai funcionar. Você teria que compilar com o Harbour 3.2 ou 3.4.

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
rrb info
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 20 Jul 2015 16:17
Localização: barretos/sp

SetKeyMouse da VLIB não funciona com Harbour

Mensagem por rrb info »

Boa noite pessoal

Grande Toledo, meu precioso GURU :{ , para variar você estava certo, tinha coisa do hmg.3.0.35 interferindo no hb3.2.
Consegui compilar o seu DEMO e resolvi meu problema do SETKEYMOUSE() tambem, só que usando o hb3.2
Segue alguns toques para os amigos que possam a vir ter o mesmo problema que o meu.

-Primeiro, a VISUAL2.CH não funciona se na linha de compilação do HBMK2 não tiver -gtwvw ( vai compilar, mas ao executar o sistema ele vai travar )
-Segundo, o SETKEYMOUE() só funciona com o VLREAD da VISUAL2.CH
-Terceiro, o VLIB.PRG tem que estar na linha de compilação e não ser chamado atraves do #include "VLIB.PRG"
-Quarto, o que mais traria trabalho é ter de mudar no sistema inteiro, onde se tem o comando READ mudar para VLREAD, mais isto se resolve com #command read => vlread

Grato a todos

Valeu :))
Responder