Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
15 mars 2012 à 08:04
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
19 mars 2012 à 07:06
Bonjour à tous,
Je travaille actuellement sur la refonte d'un contrôle Thumbs perso' (et destiné à un usage interne uniquement). Ce contrôle est destiné à afficher des vignettes de photos un peu comme Windows Explorer.
Mon ancien contrôle que je réécris totalement était composé d'un contrôle Picture contenant un certain nombre de Contrôles Image (celui du stock de VB6). Jusque là pas de problème et les évènements se produisent aussi sans problème.
Le nouveau contient aussi un contrôle Picture avec un certain nombre de contrôles Image (mais celui issu des MSForms).
L'affichage est sans problème mais l'évènement MouseDown a un problème avec le clic droit. Un essai de lancer un menu popup se passe très bien avec le clic gauche, mais il ne réagit pas avec le clic droit SAUF SI j'ai fait un clic classique (donc gauche) auparavant. Je précise que l'index correspond bien car il réagit au MouseMove.
Je précise que j'utilise le contrôle des MSForms pour 2 raisons. Il permet l'option SizeModeClip pour la propriété PictureMode chose que la propriété Stretch du contrôle natif ne fait pas. Et 2ème raison, il est à usage interne seulement.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 15 mars 2012 à 15:05
non non, c'est bien cela.
référence plutot que pointeur... on ne sais pas trop ce que cela manipule, mais ce n'est pas une adresse mémoire directe, attention aux abus de langages
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 15 mars 2012 à 08:45
lié au msforms... ils fonctionne étrangement.
tu n'aura pas le droit de distribuer ton appli, les msForms te l'interdisent (usage interne, noté, m'enfin)
Pourquoi passer par un quelconque controle Image, de toute façon ?
VB sais très bien dessiner des images (portions, étirées, etc...)
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 15 mars 2012 à 08:51
Salut Renfield,
et merci de ta réponse
VB sais très bien dessiner des images (portions, étirées, etc...)
Oui mais comment, par une API ou une fonction native (et si oui laquelle ?) et alors comment récupérer les évènements MouseMove and Co sauf à mémoriser les coordonnées de toutes mes vignettes !!!
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 15 mars 2012 à 09:13
Les maths pures ne sont pas mon fort.
La solution GDI+ est tentante pour les raisons que tu citent et en plus j'y gagnerais certainement en rapidité, mais m'obligerait à utiliser des contrôles Picture en lieu et place des Image pour avoir au minimum un hWnd (voire un hDC) à fournir.
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 15 mars 2012 à 12:38
Désolé, mais j'ai encore une question,
Effectivement on récupère via la fonction GdipLoadImageFromFile un objet image.
Mais de quel "Image" s'agit-il.
Sauf erreur de ma part, le seul objet Image VB est le contrôle dont on parlait plus tôt.
et est-ce qu'un simple Set suffit ?
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 15 mars 2012 à 15:08
J'ai fait un certain nombre d'essais avec GDI+, le problème qu'il me reste c'est la taille de la vignette affichée.
Elle est minuscule et je pense que cela vient d'un problème d'unités (un savant mélange entre les pixels et les twips), je continue et je te tiens au courant.
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 18 mars 2012 à 14:24
Salut Renfield,
Finalement, j'ai trouvé une autre solution, beaucoup plus simple à mon avis.
J'ai utilisé l'API mouse_event qui simule un click de souris.
Cela m'évite de faire des calculs à n'en plus finir et accessoirement à me plonger dans GDI+, je n'ai pas trop le temps en ce moment, mais c'est prévu pour plus tard.
Mais pourquoi Microsoft a pondu 2 contrôles images (le natif VB et celui des MSForms) à qui il manque à chacun des propriétés mais pas les mêmes bien sur ?
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 19 mars 2012 à 07:06
Pas hyper propre c'est sur...
Mais entre calculer la position et les dimensions de chacune des vignettes à la main, c'est effectivement nettement plus simple.