|
Sur l'exemple WD RouletteSurOnglet de la LST 125 |
Started by Alain, Jul., 28 2021 2:56 PM - 9 replies |
| |
| | | |
|
| |
Registered member 3 messages |
|
Posted on July, 28 2021 - 2:56 PM |
Bonjour à tous,
J’ai un souci avec l’exemple WD RouletteSurOnglet de la LST 125. L’exemple fourni fonctionne bien, mais lorsque je tente de faire la même chose dans un projet personnel cela ne fonctionne pas.
En testant pas à pas les deux j’ai noté que l’exemple de la LST sur la ligne :
SI _EVE.wParam > 0 ALORS de la procédure interne ChangeVoletSurRoulette(), renvoie l’entier positif (7864320) en avançant et l’entier négatif (-7864320) en reculant.
Hors dans mon projet, le mouvement de souris renvoie deux entiers positifs : (7864320) le même que dans l’exemple en avançant, mais (4287102976) en reculant.
Quelqu’un saurait-il me dire pourquoi ?
Merci |
| |
| |
| | | |
|
| | |
| |
Registered member 2,574 messages Popularité : +222 (260 votes) |
|
Posted on July, 28 2021 - 3:44 PM |
Ton projet est en 32 ou 64 bits ?
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Registered member 3 messages |
|
Posted on July, 29 2021 - 5:29 PM |
Philippe Saint-Bertin bonjour,
Mon projet est en 64 bits. Il est vrai que l'exemple de la LST est en 32 bits.
J'ai remarqué aussi que cela inhibait le drag and drop sur la fenêtre, qui fonctionnait bien jusque-là :
ExplorerAccepte(Vrai,MoiMême) Evénement("Explorer", "*.", 563)
Procedure Explorer() nNbFichiers est un entier
nNbFichiers = ExplorerRécupère(_EVE.wParam) ToastAffiche(gnNbFichiers, toastCourt,cvMilieu,chCentre)
Conflit au niveau des événements (_EVE.wParam) sans doute… Mais peut-on régler tout cela en restant en 64 bits ? Sinon, je me ferai une raison.
Merci |
| |
| |
| | | |
|
| | |
| |
Registered member 57 messages Popularité : +6 (6 votes) |
|
Posted on August, 01 2021 - 6:53 PM |
Changer le sens de défilement de la roulette dans Windows?
-- Dr J-M des Grottes Gestionnaire du Registre des Néphrologues Francophones de Belgique CHU Tivoli La louvière Belgique |
| |
| |
| | | |
|
| | |
| |
Registered member 2,574 messages Popularité : +222 (260 votes) |
|
Posted on August, 02 2021 - 9:31 AM |
Bonjour,
en utilisant PoidsFort() et PoidsFaible() ?
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Registered member 2,574 messages Popularité : +222 (260 votes) |
|
Posted on August, 02 2021 - 9:34 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 351 messages Popularité : +75 (75 votes) |
|
Posted on August, 04 2021 - 3:22 PM |
Bonjour,
Voici l'explication qui te permettra de mieux comprendre pourquoi il y a une différence entre le 32 et le 64 bits :
En 32 bits (entier système sur 4 octets) :
0x00780000 = 7864320 0xFF880000 = -7864320 En 64 bits (entier système sur 8 octets) :
0x0000000000780000 = 7864320 0x00000000FF880000 = 4287102976 Il te faut donc conserver uniquement les 4 derniers octets de ton entier système et le transformer en entier sur 4 octets pour le 64 bits pour que ton test fonctionne.
(A noter qu'en 64 bits _EVE.lparam et _EVE.wparam sont des entiers sur 8 octets).
La fonction PoidsFaible() te permettra de faire tout ça en lui précisant la taille voulue, ton code sera ainsi compatible 32 et 64 bits.
Dans ton cas :
PoidsFaible(_EVE.wParam,4) Ta routine deviendra donc :
Procedure Volet_Changement_Avec_Roulette()
Nombre_Volets_Maximum est un entier = MoiMême..Occurrence
SI PoidsFaible(_EVE.wParam,4) > 0 ALORS POUR Compteur = MoiMême - 1 _À_ 1 PAS -1 SI MoiMême[Compteur]..Visible _ET_ MoiMême[Compteur]..Etat = Actif ALORS MoiMême = Compteur; SORTIR FIN SINON POUR Compteur = MoiMême + 1 _À_ Nombre_Volets_Maximum SI MoiMême[Compteur]..Visible _ET_ MoiMême[Compteur]..Etat = Actif ALORS MoiMême = Compteur; SORTIR FIN FIN
_EVE.Retour = 0 J'ai ajouté mon code source pour la gestion de la roulette dans les rubans et les onglets, je ne sais pas comment est l'exemple de la LST mais j'espère qu'il est identique ou même mieux ! (mais apparemment non puisqu'il ne fonctionne pas en 64 bits)
Pour implémenter cette procédure sur ton champ Ruban ou Onglet, tu peux utiliser ce code dans la déclaration de ta fenêtre ou du champ par exemple ou bien lancer la procédure directement depuis l'événement WM_MOUSEWHEEL du code de ton champ :
Nom_Du_Champ..Traitement[trtRouletteSouris]..Avant = Volet_Changement_Avec_Roulette
-- Bon développement, Patrick [3po.fr] |
| |
| |
| | | |
|
| | |
| |
Posted on August, 08 2021 - 8:57 AM |
Patrick bonjour,
Merci pour ta réponse très claire. Bien qu'étant un "développeur" amateur elle me permet de comprendre ce qui se passe et va me permettre de m'y adapter.
Cordialement,
Alain/Pavulon |
| |
| |
| | | |
|
| | |
| |
Registered member 3 messages |
|
Posted on August, 08 2021 - 9:03 AM |
Patrick Allémoz, merci de ta réponse très claire. Bien que "développeur" amateur je vais pouvoir m'adapter à la situation. Cordialement.
Alain/Pavulon |
| |
| |
| | | |
|
| | |
| |
Registered member 351 messages Popularité : +75 (75 votes) |
|
Posted on August, 08 2021 - 9:52 AM |
Patrick c'est suffisant, merci bien.
J'aurai dû optimiser ce code un peu plus avec ceci :
Procedure Volet_Changement_Avec_Roulette()
SI PoidsFaible(_EVE.wParam,4) > 0 ALORS
POUR Compteur = MoiMême - 1 _À_ 1 PAS -1 SI MoiMême[Compteur]..Visible _ET_ MoiMême[Compteur]..Etat = Actif ALORS MoiMême = Compteur; SORTIR FIN
SINON
POUR Compteur = MoiMême + 1 _À_ MoiMême..Occurrence SI MoiMême[Compteur]..Visible _ET_ MoiMême[Compteur]..Etat = Actif ALORS MoiMême = Compteur; SORTIR FIN
FIN
_EVE.Retour = 0 La conservation du nombre de volets n'est pas utile dans ce cas !
-- Bon développement, Patrick [3po.fr] |
| |
| |
| | | |
|
| | | | |
| | |
|