Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 2019
-
22 avril 2010 à 16:27
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 2019
-
23 avril 2010 à 10:37
Bonjour,
Je cherche à gérer les scrollbars crée avec SetWindowLong et je n'y arrive pas... Sa à pourtant pas l'aire si compliqué
Alors déjà un ptit bout de code (à mettre dans un form) :
'Cette API retourne un long représentant le "type" d'affichage de la form (ou de tout control aillant un handle)
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
'Cette API envoie un long représentant le "type" d'affichage de la form (ou de tout control aillant un handle)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WinLong_SetStyle As Long = -16
Private Const WinLong_VSCROLL As Long = &H200000
Private Const WinLong_HSCROLL As Long = &H100000
Private Sub Form_Load()
Dim WindowLong As Long
WindowLong = GetWindowLong(Me.hWnd, WinLong_SetStyle)
'Ajoute au style la scroll Verticale (si elle n'existe pas)
If Not CBool(WindowLong And WinLong_VSCROLL) Then
WindowLong = WindowLong Or WinLong_VSCROLL
End If
'Ajoute au style la scroll Horizontale (si elle n'existe pas)
If Not CBool(WindowLong And WinLong_HSCROLL) Then
WindowLong = WindowLong Or WinLong_HSCROLL
End If
'Applique le nouveau style
SetWindowLong Me.hWnd, WinLong_SetStyle, WindowLong
End Sub
Voila jusque ici tout vas pour le mieux, les scrolls on bien été crée .
Par contre elle ne bouge pas
Ensuite j'essaie de les gérer :
Pour sa j'ai ajouté 7 textbox (indexer sa vas plus vite ^^) (nommé text1 de l'index 0 à 6), deux boutons (Command1 gérant le Get et Command2 gérant le Set, voir le bout de code ci dessous), un dernier TextBox pour affiché les valeurs de retour des API (text2), et pour finir un check (Check1) pour envoyé Vrais ou Faux à l'API SetCrollInfo (si qu'un sait à quoi ce bool correspond je suis preneur )
'Retourne les infos des scrolls
Private Declare Function GetScrollInfo Lib "user32" (ByVal hWnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long
'Configure les infos des scrolls
Private Declare Function SetScrollInfo Lib "user32" (ByVal hWnd As Long, ByVal n As Long, lpcScrollInfo As SCROLLINFO, ByVal bool As Boolean) As Long
'La structure attendu par les API GetScrollInfo et SetScrollInfo
Private Type SCROLLINFO
cbSize As Long
fMask As Long
nMin As Long
nMax As Long
nPage As Long
nPos As Long
nTrackPos As Long
End Type
'Constante permettant d'accéder à la scroll horizontale
Private Const ScrInfo_SB_HORZ = 0
'Constante permettant d'accéder à la scroll verticale
Private Const ScrInfo_SB_VERT = 1
Private Sub Command1_Click()
Text2.Text = GetScrollInfo(Me.hWnd, SB_VERT, scroll)
Text1(0).Text = scroll.cbSize
Text1(1).Text = scroll.fMask
Text1(2).Text = scroll.nMax
Text1(3).Text = scroll.nMin
Text1(4).Text = scroll.nPage
Text1(5).Text = scroll.nPos
Text1(6).Text = scroll.nTrackPos
End Sub
Private Sub Command2_Click()
scroll.cbSize = Text1(0).Text
scroll.fMask = Text1(1).Text
scroll.nMax = Text1(2).Text
scroll.nMin = Text1(3).Text
scroll.nPage = Text1(4).Text
scroll.nPos = Text1(5).Text
scroll.nTrackPos = Text1(6).Text
Text2.Text SetScrollInfo(Me.hWnd, SB_VERT, scroll, CBool(Check1.Value vbChecked))
End Sub
Et là patatras rien ne fonctionne (enfin je comprend pas tout )
[del] Ce que j'ai déjà réussit à comprendre :
- Si le 1ér bit de fMask est à vrais (soit valeur 1,3,5,9,17,...) la scroll du bas disparais (je n'arrive pas à la faire réapparaitre ensuite)
- SetScrollInfo me retourne la valeur de nMax (alors que sa devrais être nPos )
Et puis c'est tout Autant dire pas grand chose /del
Heeeeeeee en faite non j'ai rien compris (pour faire d'autre est j'ai désactivé les set/getwindowlong)
Si min est > max (pas > = mais bien >) la scroll apparais
cbSize doit toujours être = à 28 ???? (voir ici)
Haaaaaaaaaa je comprend plus rien
Help Me plz
Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 22 avril 2010 à 16:53
Haaaaaaaaa j'ai compris le bool
Le scroll se refesh se fait automatiquement
Je tiens informé de mes évolution
Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 22 avril 2010 à 17:18
Ouuuuppppsssssssss
L'inverstion min max étais dans mon code pas dans l'API
Sa avance sa avance
Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 22 avril 2010 à 17:47
Arf il me reste plus qu'à activer mes scrolls pour qu'elle réagisses sur les événements de la souris quand sa veut pas sa veut pas
(J'explique tout ce que j'ai compris ensuite )
Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 23 avril 2010 à 10:37
Dans la famille "démerde toi" je voudrais Polack77
Bon bà je n'y arrive définitivement pas (et je n'est presque plus de temps à accordé à ce sujet)
Du coup je récupère et bricole le code de Steve McMahon (ENCORE merci à lui ) pour en faire des usercontrols (Vertical_ScrollBar, Horizontal_ScrollBar, et FrameAutoScrol)