mover o mouse

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

Moderador: Moderadores

Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

mover o mouse

Mensagem por Abel »

Ola pessoal, estou usando esta rotina abaixo para mover o mouse em uma posicao especifica da tela, mas o que eu precisava mesmo, é mover o mouse 1 linha abaixo da posicao atual., sera que alguem sabe como fazer ?

Abracos

Código: Selecionar todos

#pragma BEGINDUMP

#include <windows.h>
#include <windef.h>

VOID CENTRALIZA_MOUSE();
HB_FUNC ( CENTRALIZA_MOUSE )
{                  //  col lin
   SetCursorPos(450,280);
}   

#pragma ENDDUMP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

mover o mouse

Mensagem por Pablo César »

Abel, você diz que quer o ponteiro do mouse se movimente uma linha a mais da posição Atual. Ai vem as dúvidas: quando você diz "posição atual" seria do ponteiro onde o mouse estiver posicionado ou você quis dizer a posição do cursor ? Claro tudo isto imagino que é para Harbour/console. Mas o código C que você postou o mouse irá se movimentar em pixels o que se sub-entende que essa é uma rotina para modo gráfico.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

mover o mouse

Mensagem por Abel »

ola, entao é harbour modo console mesmo, e ele realmente se movimenta, o problema é justamente este, os pixels.

eu quero move-lo, uma linha para baixo da posicao atual do mouse, mas nao sei como saber qual é a posicao que ele se encontra par mandar ele mover alguns pixels para baixo.

tentei fazer umas mudancas, mas dava erro de compilacao.

Abraços, grato,
ABEL
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

mover o mouse

Mensagem por Pablo César »

Olha Abel, eu não uso Harbour em modo console, então não tenho como testar pra valer. Por isso gostaria que você me mostrasse o seu código ou faça um código exemplo pra eu testar.

Eu comecei mas não sei se funcionaria isto:

Código: Selecionar todos

Function Pula()
Local nRow:=MROW(), nCol:=MCOL()

MSETPOS( nRow+1, nCol )
MSETCURSOR(.T.)
Return .T.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

mover o mouse

Mensagem por Abel »

ola, Pablo,

aparentemente o codigo é este, mas ele nao tem nenhum efeito na tela,

mas o mouse funciona normalmente nos menus.

sera que tenho que linkar alguma lib em especial ?

Abracos,
ABEL
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

mover o mouse

Mensagem por Abel »

ola, apos pesquisas dos comando do "c++" na net, e analisando a rotina movemouse que vi neste mesmo forum, consegui criar uma rotina que sobe ou desce o mouse a partir da posicao q ele se encontra.

segue:

Código: Selecionar todos

#pragma BEGINDUMP

#include <windows.h>
#include <windef.h>

VOID MoveMouse();
HB_FUNC( MOVEMOUSE )
 {
    RECT TrayRect;
    GetWindowRect(FindWindowEx(FindWindow("Shell_TrayWnd",NULL),0,"TrayNotifyWnd",NULL),&TrayRect);

    POINT Cursor;
    GetCursorPos(&Cursor);

    while(TrayRect.left+11 < TrayRect.right) {
        SetCursorPos(TrayRect.left+10,TrayRect.top+12);
        Sleep(1);
        TrayRect.left += GetSystemMetrics(SM_CXSMICON)+2;
    }
    SetCursorPos(Cursor.x,Cursor.y);
}


VOID SOBE_MOUSE();
HB_FUNC ( SOBE_MOUSE )
{           //  col lin
   POINT Cursor;
   GetCursorPos(&Cursor);
   
   Cursor.y = Cursor.y-GetSystemMetrics(SM_CYSMICON)-35;
   SetCursorPos(Cursor.x,Cursor.y);

   /////  SetCursorPos(450,280);
}   


VOID DESCE_MOUSE();
HB_FUNC ( DESCE_MOUSE )
{           //  col lin
   POINT Cursor;
   GetCursorPos(&Cursor);
   
   Cursor.y = Cursor.y+GetSystemMetrics(SM_CYSMICON)+10;
   SetCursorPos(Cursor.x,Cursor.y);

   /////  SetCursorPos(450,280);
}   

#pragma ENDDUMP
Editado pela última vez por Pablo César em 14 Mar 2013 14:29, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

mover o mouse

Mensagem por Paulo Pereira »

Entao pessoal.. pegando carona aqui,, estou perdendo clientes por causa do mouse,
e por nao ser aquela telinha bonita do windows...
eu uso modo console...coloquei esses comandos

ANNOUNCE HB_GT_SYS
REQUEST HB_GT_WIN_DEFAULT // tela grafica
REQUEST HB_GT_WVT_DEFAULT // tela grafica
HB_GTInfo( HB_GTI_ALTENTER, .T. ) * Toggles Alt+Enter as full screen switch (HB_GTInfo( HB_GTI_MAXIMIZED, .T. ) * Get/Set Window's Maximized status (


entao a tela fica grafica e tem um mouse, mas como fazer para que ele navegue/selecione as opcoes de menu ?

Se tiver uma tela com varios get. é possivel clicar uma get especifico ?

Obrigado
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

mover o mouse

Mensagem por asimoes »

Olá,

Com xHarbour:

SET EVENTMASK TO INKEY_ALL

ou

Com Harbour:

SET( _SET_EVENTMASK, INKEY_ALL )
►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)
Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

mover o mouse

Mensagem por Paulo Pereira »

ok funciona..
mas senti 2 problemas:

1 -estando dentro dos gets , nao tenho opcao, copia/cola

2- estando num sub menu , parado em MENU TO vopcao, nao tem como clicar
em outro menu, ou no menu anterior, e jogar o foco para aquela area...
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

mover o mouse

Mensagem por Pablo César »

Paulo Pereira escreveu:mas senti 2 problemas:

1 -estando dentro dos gets , nao tenho opcao, copia/cola
Paulo, modo console por natureza, não possui os mesmos recursos que a programação GUI (for Windows) nos traz. É dizer, essa questão de copiar/colar nos GETs ou telas não possui na sua natureza em modo console. Você mesmo deve implementar funções para tais recursos. O que eu acho uma total perdida de tempo, passe logo a usar bibliotecas gráficas que tem maiores e melhores recursos.
Neste tópico você vai ter como referência para implementação: https://pctoledo.org/forum/viewto ... 440#p72440

Outra forma mais prática e que vem do Windows mas o programa precisa estar em modo janelado (não em tela cheia) e que pode ser utilizado. No entanto requer também que o atalho que abre a sua aplicação esteja devidamente configurada. Veja este outro tópico: https://pctoledo.org/forum/viewto ... 811#p79811
2- estando num sub menu , parado em MENU TO vopcao, nao tem como clicar
em outro menu, ou no menu anterior, e jogar o foco para aquela area...
Tudo depende como são elaborado esses menu e sub-menus. Talvez você não tenha conhecido ou não lembre. Mas o MiroMenu é um ótimo exemplo para conseguir esse efeito de navegar entre menus e sub-menus. O Miro, é um gerador de aplicativos mas que era pago, não sei dizer se ainda estão comercializando. De todas formas, postei um exemplo simples recém gerado que irá dar uma boa ideia de como é composto os menus no Miro, podendo você reproduzir no Harbour. Veja aqui para download do exemplo do Miro_Menu, espero que goste.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder