Ir ao conteúdo
  • Cadastre-se

s4lezardv1A

Membros Plenos
  • Total de itens

    46
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Aqui tem um prototipo de uma parte do programa: #include <windows.h> int main{ if ( ( ir_Evento->Event.MouseEvent.dwMousePosition.X == 40) && ( ir_Evento->Event.MouseEvent.dwMousePosition.Y == 50){ //here if the mouse is on position, the text change color. SetConsoleTextAttribute(hConsole, BACKGROUND_RED); if (MOUSE_EVENT == ir_func.EventType && ir_func.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED){ //here if the mouse is on position and after press the left button on mouse,it starts the MENU function. menu(); }} while(1){ gotoxy(10,20); printf("testing animation"); gotoxy(10,20); printf("animation testing"); } return 0; } É uma animação de texto, ainda estou pensando no que vou fazer, mas ela vai ficar em um loop infinito la embaixo da tela. Com isso, todas as outras funções do mouse não recebem comandos infelizmente. Estou usando o header windows.h e para controlar o mouse uso a Winapi. É novo pra mim tambem. O kbhit espera um comando no teclado, para o mouse não da certo, então to buscando formas de funcionar. adicionado 0 minutos depois Entaõ, não queria ir por esse caminho, acredito que tenha alguma forma assim como existe o KBHIT para o teclado, deve existir algo para o movimento do mouse.
  2. Não da. O que acontece é o seguinte: no meu programa , quando posiciono o mouse em cima de um ponto(40,50) a letra que está lá muda de cor, e quando clico nesse mesmo ponto, o programa inicia um evento que eu determinei. Mas...... quando eu coloco essa animação em um loop, não acontece mais isso... se eu for por exemplo no ponto(40,50) a letra nem muda de cor nem quando eu clico inicia o evento, eu tenho que obrigatoriamente esperar o loop da animação acabar para poder usar essas outras funcoes. Li sobre uma função chamada ReadConsoleNput e outra chamada peekconsoleinput, eu não poderia usar alguma dessas para caso a animação estiver rodando , o programa ler que eu posicionei o console em cima da letra, ela ainda vai mudar de cor enquanto a animação roda e quando eu clicar também, tanto a função de clicar quanto a animação continuem funcionando ?
  3. por enquanto estou só no prototipo da animação. Mas é bem simples, só para aparecer rodando um texto. E caso eu queria que a animação rodando junto com funçoes do mouse? Por exemplo , se posiciono em uma posição da tela, o texto daquela posição fica de outra cor, e se eu clicar ele vai para um evento. Como posso utilizar a função kbhit para ficar rodando enquanto eu vou posicionando o mouse em varias posições,etc?
  4. Gostaria de encontrar um jeito para deixar 2 eventos acontecerem ao mesmo tempo na tela. Quero fazer uma animação em loop e abaixo dela quero deixar algumas informações para receber valores: while(x<10){ Animação x++; } printf("Digite o nome: "); gets(nome); mas só consigo digitar alguma coisa quando a animação acabar. Tem algum jeito de deixar rodar a animação indefinidamente e enquanto isso eu possa digitar embaixo sem ter que esperar a animação acabar?
  5. Poste o codigo para podermos ajudar. Você poderia seguir a logica para a diagonal principal (você não especificou qual diagonal que é), que se a linha for igual a coluna, imprima o * nessa posição da matriz.
  6. Eu estou na função MENU, e na posição 50x40 tem um evento que vou pra função COMPRA. Na função CONTATO na mesma posição 50x40 tem um outro tipo de evento que vai para função INICIAL. Para não ocorrer conflito quando eu clicar no mesmo ponto , eu usei uma variavel que recebe 1,2,3,etc.. e dependendo da tela que eu estou a variavel muda, entao na função MENU fica por exemplo : if( aux==1 && pos(x,y)==50,40) {evento COMPRA}, e na função CONTATO fica: if( aux==2 && pos(x,y)==50,40)(evento INICIAL). Para as outras funções esta dando certo, só para essas duas funções que ta dando conflito. Por enquanto eu mudei a posição do botão de uma das funções para contornar esse problema.
  7. Consegui usando seu codigo,mudei conforme o que estava no meu: if (MOUSE_EVENT == ir_func.EventType && ir_func.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) ele estava assim antes: if ( ir_Evento->Event.MouseEvent.dwEventFlags == SINGLE_CLICK ) ATUALIZADO: adicionado 33 minutos depois Ansic, estou tendo um outro conflito, por exemplo , em uma tela menu eu coloco uma condição que se eu clicar na posição = 48,50, eu vou pra função compra();, em outra tela, por exemplo venda, se eu clicar na posição = 48,50, ou eu vou para a função ainda da compra, ou entao fica bugado o cursor. Eu coloquei uma variavel pra contar em que tela estou pra nao dar esse conflito, mas parece q ta dando ainda assim, mas a variavel confere q estou na tela certa.
  8. Ansic, desculpe a ignorância mesmo, é uma area nova pra mim, estou perdido. No corpo do meu programa esta: DWORD dw_func; BOOL bl_func; INPUT_RECORD ir_func; e na blblioteca wincon.h so achei esse dwbuttonstate que te mostrei anteriormente, alem disso achei uma constante chamada FROM_LEFT_1ST_BUTTON_PRESSED , mas ela nao funciona, quando uso ela assim que passo com o mouse, ja é iniciado a condição.
  9. sim, isso que eu ia te perguntar. Sou bem iniciante em linguagem de programação, comecei com visualg semestre passado e agora estou em c, entao ainda estou perdido. Esse status em dwbuttonstate você encontra onde? aqui nao achei, o q achei foi: typedef struct _MOUSE_EVENT_RECORD { COORD dwMousePosition; DWORD dwButtonState; DWORD dwControlKeyState; DWORD dwEventFlags; onde acho ele e o que devo colocar la?
  10. Obrigado Ansic: Tinha achado essa daqui e resolvi testar: void SetWindow(int Width, int Height) { _COORD coord; coord.X = Width; coord.Y = Height; _SMALL_RECT Rect; Rect.Top = 0; Rect.Left = 0; Rect.Bottom = Height - 1; Rect.Right = Width - 1; HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE); // Get Handle SetConsoleScreenBufferSize(Handle, coord); // Set Buffer Size SetConsoleWindowInfo(Handle, TRUE, &Rect); // Set Window Size } Deu certinho. Estava batendo a cabeça. Agora estou com outra duvida. Estou usando uma api que tem uma função desse tipo: ( ir_Evento->Event.MouseEvent.dwEventFlags == DOUBLE_CLICK ) Com ela eu faço uma condição casso eu pressiono duas vezes qualquer um dos dois botões do mouse. Sabe dizer como posso que ele prossiga somente caso eu apertar um botão do mouse, ou mais alem, se caso eu apertar somente um botão do lado esquerdo do mouse? ATUALIZADO: Consegui resolver Ansic, veja se o que eu fiz foi o certo. Li que quando o valor para uma variavel sobre o estado do mouse, é 0 significa que ela esta pressionada. Na definição de double click estava 2, criei #define SINGLE_CLICK 0 ,troquei a variavel de lugar e deu certo. Foi o mais correto ou ja tinha algum modo para fazer isso?
  11. amigo deu tudo certo. Mas gostaria de saber como usar essa parte para somente um click? se eu coloco FROM LEFT MOUSE BUTTON PRESSED(algo tipo assim), quando eu passo em cima ele entra na condiçao. Eu gostaria que somente quando eu clicasse 1 vez ele iria para a condição.
  12. Boa noite pessoal. Estou com um problema de conflito. Estou usando uma função para pegar o estado do mouse, e junto com ela estou usando uma função system para mudar o tamanho da janela do prompt . Não quero maximizar quero colocar 120x40, entao uso a função: system("MODE con cols=119 lines=40 "); Mas reparei que quando uso ela, o codigo para pegar o estado do mouse nao funciona. So funciona sem, Tem alguma outra função para mudar o tamanho da tela do prompt sem essa system?
  13. Sem sucesso mesmo, não vale a pena nao kk. Deixei a primeira função dentro da segunda mesmo. valeu Ansic
  14. Meio que consegui. Quando eu terminar de implementar eu envio o codigo aqui. Eu tenho que ler o evento do mouse. Faço um IF tambem caso ele esteja na posição certa, e caso eu dou 2 clicks no mouse. To tentando fazer um menu.
  15. sim sim, pensando em um modo de responder a questão poderia ser assim mesmo. Por enquanto eu deixei a questão desse modo, função dentro de função. Mas sera que não existe algum modo de eu chamar uma função sem retorno e sem parametro para eu imprimir ponteiro?Tentei declarar o ponteiro dentro dessa função sem sucesso...

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×