double click

corwin Message lu Posté le 08 Fév 2009 à 18:52 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
Bonjours alors voila j'ai tester plusieurs façon de reconnaitre un double clic (Timer(), user32) mais le résultat est presque identique, le programme ralenti trop. Es que quelqu'un aurait quelque chose pour que le programme de ralentisse pas ? Encore merci d'avance :wink:
Darktib Message lu Posté le 08 Fév 2009 à 18:56 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
A mon avis faut utiliser user32.
C'est pour bluegui 2 ?
corwin Message lu Posté le 08 Fév 2009 à 19:12 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
J'ai déjà essayer avec user32, sa ralenti moins que le timer mais sa ralentit trop quand même :happy:
C'est pour le même projet que la question pour bluegui 2. Quand j'aurrai quelque chose de correcte je mettrait le projet sur le fofo.
Darktib Message lu Posté le 08 Fév 2009 à 19:28 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
L'idéel serait un truc genre Qt, ce qqui n'est pas faisable en dbp...
Je pense que tu peux par exemple utilise Ctrl+clic ou Shift plus clic, ca sera beaucoup plus performant
corwin Message lu Posté le 08 Fév 2009 à 19:31 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
Oui bonne idée c'est se que je vais faire pour l'instant. Merci :grin:
softreaver Message lu Posté le 08 Fév 2009 à 20:03 Bulle
Avatar de softreaver
Membre Novice

Messages : 89
GCPoints : 23521
Franchement je ne vois pas pourquoi ça ralentie tant que ça.

Essaye ce petit bout de code :

Code :
MouseTimer   as integer
MouseClicked as boolean

DO

If mouseclick() = 0 then MouseClicked = 0

If mouseclick() = 1 and MouseClicked = 0
   MouseClicked = 1

   If Timer() - MouseTimer < 600
      print "Double clique!"
      MouseTimer = 0
   Else
      MouseTimer = Timer()
   EndIf
EndIf

wait 1   `Pour éviter que le processeur ne s'éforce d'aller trop vite étant donné la petitesse du code.

LOOP



Il affiche "Double clique!" dès qu'il détecte un double clique, essaye de l'incorporer dans ton programme pour voir si ça ralenti, mais ça m'étonnerais.
Dernière édition le 08 Fév 2009 à 20:04
Darktib Message lu Posté le 08 Fév 2009 à 20:19 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
J'aime bien le commentaire du wait 1 :lol:
En vérité le wait 1 ne fait strictement rien, faut mettre sleep 1, qui va permettre a d'autres applications de tourner.
corwin Message lu Posté le 09 Fév 2009 à 11:08 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
Encore merci, sa marche parfaitement. Je ne comprend toujours pas d'où le ralentissement a pu venir si se n'est du timer() pourtant j'utilise souvant le double clic, le mystère de DBP. :wink:
softreaver Message lu Posté le 11 Fév 2009 à 18:24 Bulle
Avatar de softreaver
Membre Novice

Messages : 89
GCPoints : 23521


Darktib a écrit :

En vérité le wait 1 ne fait strictement rien, faut mettre sleep 1, qui va permettre a d'autres applications de tourner.



Oui je n'ai jamais vraiment compris la différence entre les commande WAIT et SLEEP.
Mais si je comprend bien ton message, WAIT va carrément arrêter tous les programmes tandis que SLEEP se contentera d'arrêter seulement ton programme, c'est bien ça?


corwin a écrit :

Encore merci, sa marche parfaitement. Je ne comprend toujours pas d'où le ralentissement a pu venir si se n'est du timer() pourtant j'utilise souvant le double clic, le mystère de DBP. :wink:



No problemo :cool:
Syltech Message lu Posté le 11 Fév 2009 à 19:10 Bulle
Avatar de Syltech
Membre Confirmé

Messages : 282
GCPoints : 71266
Le WAIT permet de mettre en pause le programme, le processeur est utilisé à 100%.
Le SLEEP permet de mettre en pause le programme et(normalement) libère le processeur.

Si je ne me trompe pas c'est ça !

Syltech
Image
Darktib Message lu Posté le 12 Fév 2009 à 18:39 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
C'est bien ca.
a noter : jamais un programme ne s'arrete qu'une milliseconde, mettre 'SLEEP 1' implique la majeure partie du temps d'attendre dans les 2 a 10 ms (question d'imprécision du system). Cette commande (sleep 1) veut juste signifier : "je m'arrete le minimum de temps possible"
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0374 secondes