GetDC() GetwindowDC() retour codes couleurs API/ palette excel

cracos30 Messages postés 81 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 12 avril 2013 - 24 juil. 2009 à 11:00
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 24 juil. 2009 à 12:53
Bonjour,
Ha ben tiens, vlà l'fils à Pénible!
Alors voilà c'est l'histoire d'un mec, qui veut détecter une bordure, par exemple le bord d'une feuille Excel. Pour cela il fait un brouillon :

Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long


Public Sub PIQLIMIT()

  ' ActiveWindow.DisplayGridlines = False
   
PixelColor = GetPixel(GetDC(0), 600, 600)
'Call ReleaseDC(0, PixelColor) 

For PASAPA = 600 To 1 Step -0.05
PICAGE = GetPixel(GetDC(0), PASAPA, 600)
'Call ReleaseDC(0, PICAGE)
If PixelColor <> PICAGE Then 
ORIGX = PASAPA 
Exit For
End If
Next

end sub


Sur la feuille il met une grande forme rouge. Quand il lance le prog, avec un point d'arrêt sur "ORIGX = PASAPA", il trouve 16777215 pour PixelColor 16777151 pour PICAGE avec PASAPAS 592,45 ???
Changement de couleur forme : Noir
Pareil ???

Ces couleurs font du gris et du noir pour la colorisation d'une cellule,
de plus s'il trace une courbe avec 16777215, elle est blanche! ( ou transparente ?), enfin bref pas correspondante. (essais getwindowdc idem)
Question : Doit il se suicider de suite ?
Merci d'avance pour lui.

5 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 juil. 2009 à 11:58
salut,

(tournure de topic amusante, mais uniquement parce que j'avais lu que tu allais reposter. d'autres lecteurs pourraient ne pas te répondre juste à cause de çà. bref)


résumé :
ici ce n'est qu'un exemple réduit (brouillon), en VBA

résumé ou pas, où sont PASAPA , PICAGE et ORIGX ?
de quel type?

For PASAPA = 600 To 1 Step -0.05
PASAPA devrait être DOUBLE donc, mais GETPIXEL attend un LONG, pas de nombre à virgule!

voilà la première piste :
revoir les types, déclarer si ce n'est pas fait, et utiliser un pas adapté


ps : getdc(0) ne changera pas dans la boucle, conserve le en variable avant d'entrer dans la boucle

++

[hr]
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 juil. 2009 à 12:02
.... getdc(0) ne renvoie pas le DC de ton formulaire de toute façon,
tu n'observes pas la partie rouge
et ni DC ni handle en VBA, il faut tricher
(handle par titre avec findwindows par exemple, getdc de ce handle)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 juil. 2009 à 12:31
NON !

PixelColor = GetPixel(GetDC(0), 600, 600)


et comment tu le libère ton DC, pas de RelaseDc possible, là , donc y'a fuite mémoire


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
24 juil. 2009 à 12:48
Bonjour,

Euh, oui, d'accord avec PCPT, si je n'avais pas lu ton dernier post, il me semble que je ne répondrais pas à celui-ci...

D'ailleurs, je vais te faire une réponse sous forme de question, parce que je ne vois pas où tu veux aller vraiment...

[...] détecter une bordure, par exemple le bord d'une feuille Excel[...]


Une bordure ou un bord de feuille ?

> Pour une bordure, je ne vois pas l'intérêt d'avoir recours à des API ?... Pourquoi ne pas utiliser Selection.Borders(xlEdgeBottom).LineStyle ? ou Range à la place de Selection (ou autre type de référence...)... enfin, je reste dubitatif...

> Un bord de feuille : Cela ne veut rien dire de précis, ça ?... La dernière cellule qui a une bordure ??

Amicalement,
Us.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
24 juil. 2009 à 12:53
On est bien dans la rubrique VBA... Suite aux réponses de PCPT et Renfield, j'ai l'impression d'être largé... (pardonner moi, si mes propos sont hors sujet...)

Amicalement,
Us.
0
Rejoignez-nous