Page 1 sur 1
GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 10:32
par Atlante
Hello,
Une petite question sur cette ligne de code.
Je comprends l'api Windows il 'y a pas de souci à ce niveau là mais je ne comprends pas le :
Ce la correspond a un et si la touche est appuyée ?
cdt,
Atlante
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 10:41
par falsam
Le code fonctionnera aussi sans le & $1 à condition d'avoir le doigt agile.
Place un debug "teste" juste aprés ton GetAsyncKeyState_(#xxx) & $1 et retite le & $1. Puis remet le.
Un peu de code qui affiche ou pas une fenêtre. Touche F8 pour activer ou désactiver cette fenêtre.
Code : Tout sélectionner
Enumeration
#Mainform
#MenuPopUp
EndEnumeration
Global MainformStatus.b
Procedure ShowHideWindow(*Value)
Repeat
If GetAsyncKeyState_(#VK_F8) & $1
Debug "teste"
If MainformStatus = #False
HideWindow(#MainForm, #False)
MainformStatus = #True
Else
HideWindow(#Mainform, #True)
MainformStatus = #False
EndIf
EndIf
ForEver
EndProcedure
OpenWindow(#MainForm, 100, 150, 300, 100, "SysTray Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreatePopupMenu(#MenuPopUp)
MenuItem(0, "Afficher la fenetre")
MenuItem(1, "Quitter")
HideWindow(#Mainform, #True)
AddSysTrayIcon(1, WindowID(#Mainform), LoadIcon_(#Null, #IDI_WARNING))
SysTrayIconToolTip(1, "Touche F8" +#CRLF$+ "Pour afficher la fenetre")
CreateThread(@ShowHideWindow(), #Null)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu()
Case 0
HideWindow(#Mainform, #False)
Case 1
End
EndSelect
Case #PB_Event_SysTray
If EventType() = #PB_EventType_LeftDoubleClick
HideWindow(#Mainform, #False)
EndIf
If EventType() = #PB_EventType_RightClick
DisplayPopupMenu(#MenuPopUp, WindowID(#Mainform))
EndIf
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 11:27
par Atlante
j'avais déjà fait l'essai mais je souhaite juste savoir à quoi cela correspond.
Par exemple le : & = and dans la syntaxe PB
et le $1 pour donner 1 seconde ?
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 12:52
par Backup
en general le fait d'ajouter un "&" (qui est en fait un AND ) reviens a faire un masque !!
Code : Tout sélectionner
a$="1001"
debug a$
debug %1001&%01 ; ici on affiche que le "1" de fin... on a masqué tout le reste
debug bin(%1001&%1110) ; ici on affiche que le 1 du debut ..
; en clair on n'affiche que si c'est pareil que le masque ;)
;rappel :
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
au passage la Doc est mal faite car elle indique
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
le "|" se voulant etre une colonne et non pas le Or "|" ce qui porte a confusion
mon affichage ci dessus serai plus clair
pour l'API le masque permet de ne tester QUE ce qui nous interresse ...
sinon l'info pourrai passer comme valable par exemple si le bit de fin est important ceci "100011" sans masque pourrai etre egal a "100111"
car sans masque le bit de fin est a 1 alors que le binaire est bien different
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 14:09
par Atlante
Tu as mis le doigt sur le problème dobro.
Je pense que j'ai une grosse lacune sur ce point là.
%1001&01 affiche que le 1 je pige à moitié car le second cas ne fonctionne pas avec mon raisonnement.
Déjà %1001 c'est le modulo sous PB ?
ensuite le masque 01 correspond bien à 0001 ?
Donc :
1001
0001
-----
0001
Mais pour le deuxième exemple cela ne fonctionne pas :
1001
0110
------
0000
Si tu pouvais m'apporter la lumière sur ce point ^^?
cdt,
Atlante
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 14:28
par GallyHC
Bonjour,
Dobro> Je vois pas le problème dans la doc de PB, moi j'ai :
LHS | RHS |Résultat
------------------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
Ce qui me parait en réalité correcte? et dans ton exemple tu mets les même valeur ?
Cordialement,
GallyHC
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 14:28
par Backup
Atlante a écrit :Tu as mis le doigt sur le problème dobro.
Je pense que j'ai une grosse lacune sur ce point là.
%1001&01 affiche que le 1 je pige à moitié car le second cas ne fonctionne pas avec mon raisonnement.
Déjà %1001 c'est le modulo sous PB ?
oui , mais le signe % au debut d'un chiffre binaire sert aussi a désigner ce chiffre comme etant Binaire !

ceci est un modulo : 10%5
ceci est un chiffre binaire %1001
tout comme "$" designe un chiffre hexa = $FF
ensuite le masque 01 correspond bien à 0001 ?
tout a fait !
Donc :
1001
0001
-----
0001
Mais pour le deuxième exemple cela ne fonctionne pas :
1001
0110
------
0000
Si tu pouvais m'apporter la lumière sur ce point ^^?
cdt,
Atlante
oui , je me suis gourré dans la syntaxe , j'aurai du ecrire :
Code : Tout sélectionner
a$="1001"
debug a$
debug %1001&%01 ; ici on affiche que le "1" de fin... on a masqué tout le reste
debug bin(%1001&%1110) ; ici on affiche que le 1 du debut ..
; en clair on n'affiche que si c'est pareil que le masque ;)
bin() permet de transformer un decimal en binaire ... je me suis planté la dessus Sorry

( j'ai modifié mon exemple )
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 14:31
par Backup
GallyHC a écrit :Bonjour,
Dobro> Je vois pas le problème dans la doc de PB, moi j'ai :
LHS | RHS |Résultat
------------------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
Ce qui me parait en réalité correcte? et dans ton exemple tu mets les même valeur ?
Cordialement,
GallyHC
oui , mais l'utilisation du caractere "|" fait confusion !! il est plus clair d'afficher
0 | 0 = 0
0 | 1 = 0
1 | 0 = 0
1 | 1 = 1
; le Signe "|" est le signe de (OR) il ne devrai donc pas apparaitre pour les autres Opérateur ...
sinon tel que c'est ecris , lorsque je vois ça :
0 | 0 | 0
moi je lis : 0
or 0
or 0 ...
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 14:42
par GallyHC
OK je n'avais pas vu cela comme tu l'explique, la c'est pas faut... On peut confondre avec le "OR" comme tu l'explique.
Cordialement,
GallyHC
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 15:45
par Atlante
Tout est plus clair sauf le $ devant le 1.
En fait j'ai cherché dans al doc mais je ne trouve rien qui dit que :
% devant variable = binaire
$ devant variable = ????
...
Je sais je suis chiant mais j'ai le droit aujourd'hui mdr
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 16:00
par GallyHC
Bonjour,
$ avant quelque chose permet juste d'écrire un nombre et hexadecimal donc :
0 = $0
1 = $1
2 = $2
3 = $3
...
10 = $a
11 = $b
12 = $c
...
un petit exemple :
Cordialement,
GallyHC
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 16:40
par Backup
Dobro a écrit :
oui , mais le signe % au debut d'un chiffre binaire sert aussi a désigner ce chiffre comme etant Binaire !

ceci est un modulo : 10%5
ceci est un chiffre binaire %1001
tout comme "$" designe un chiffre hexa = $FF

t'es peut etre miro
Bon anniversaire a Atlante , et au Psychopathe ..
(tiens c'est marrant que vous soyez né le meme jour
)
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 19:24
par falsam
Dobro a écrit :(tiens c'est marrant que vous soyez né le meme jour
)
Tu ne vas quand même pas suspecter qu'atlante est aussi un technicien informatique à la Defense tout comme Psychopathe ? Si c'était vrai ça serait vraiment incroyable
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 20:18
par Backup
Re: GetAsyncKeyState_(#xxx) & $1
Publié : lun. 18/mars/2013 22:02
par Atlante
C'est vrai, cela serait vraiment incroyable quand même cette histoire mdr
Le pire dans tout ça que que je fais toujours du support info à la défense ^^
Sauf que je fais que du n2, ça fait plaisir de plus pousser son chariot avec les pc...
Dsl Dobro mais oui je pense que je suis miro ^^.