Page 1 sur 1
ColorRequester() & DLL
Publié : lun. 27/juil./2009 17:25
par Fortix
Salutation

, juste une question,
le "colorrequester()" que nous fesons souvent appel via Pb est il le même que celui de "Paint" de Windows,
pour ma part je pense que oui, mais dans ce cas ce dernier provient bien d'une DLL spécifique!, que Windows & Pb utilisent, si c'est le cas alors quel est le nom de cette DLL si serviable?

Publié : lun. 27/juil./2009 18:04
par jbernard13
oui c'est lemême , as tu regarder du coté des api?
bonne soirée Fortix
Publié : lun. 27/juil./2009 18:07
par Anonyme
comdlg32.dll "ChooseColorA"
Non ?
@+
Publié : lun. 27/juil./2009 18:37
par Fortix

merci pour vos réponses, je vais examiner de suite

Publié : lun. 27/juil./2009 19:00
par Fortix
j'ais procedé avec la méthode "OpenLibrary" ensuite "GetFunction" mais malheureusement je ne sais pas comment obtenir les noms exacts des fonctions par exemple(Hue,sat,lum,etc....),
en fait y a t il un moyen pour liste l'intégralitée des fonctions dispo dans tel ou tel libs?
Publié : lun. 27/juil./2009 19:25
par TazNormand
Toutes les APIs sont documentées sur le site de Microsoft MSDN.
Les APIS sont "consultables ici :
MSDN API
par contre les exemples de MS sont souvent écrits en C#, VB .net et C++
Bonne recherche
Un exemple en VB d'utilisation de
ChooseColorA
Publié : lun. 27/juil./2009 19:28
par Fortix
Super bien jouer, maintenant on va examiner tout ça

,merci beaucoup
Publié : mar. 28/juil./2009 12:02
par Fortix
Code : Tout sélectionner
If OpenLibrary(0, "comdlg32.dll")
*capAddress = GetFunction(0, "ChooseColorA")
If *capAddress
hWndC = CallFunctionFast(*capAddress, "ChooseColorA"):Debug "Ok"
EndIf
EndIf
bon après ji ni ci pas pour les paramètres

Publié : mar. 28/juil./2009 13:04
par Anonyme
avec gogole , on se débrouille
Private Type CHOOSECOLOR
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As Long
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
As long = integer <.i>
As String = string <.s> ou <$>
avec sa , tu fait une structure CHOOSECOLOR
tu transforme ca en constante :
Private Const CC_RGBINIT = &H1&
Private Const CC_FULLOPEN = &H2&
Private Const CC_PREVENTFULLOPEN = &H4&
Private Const CC_SHOWHELP = &H8&
Private Const CC_ENABLEHOOK = &H10&
Private Const CC_ENABLETEMPLATE = &H20&
Private Const CC_ENABLETEMPLATEHANDLE = &H40&
Private Const CC_SOLIDCOLOR = &H80&
Private Const CC_ANYCOLOR = &H100&
Ex :
Private Const CC_RGBINIT = &H1& deviens :
#CC_RGBINIT = &H1
dim dwCustClrs.i(15) ; les couleurs personnalisé
ensuite, tu créer une variable de type CHOOSECOLOR :
lpChoosecolor.CHOOSECOLOR
With lpChoosecolor
\lStructSize = sizeof(CHOOSECOLOR)
\hwndOwner = Handle de la fenetre mere
\rgbResult = Couleur par defaut
\lpCustColors = @dwCustClrs(0) ; les couleurs perso
\flags = #CC_ANYCOLOR | #CC_RGBINIT | #CC_FULLOPEN
EndWith
Tu passes cette variable a la fonction ChooseColorA
le prototype a l'air
ChooseColorA( *struct.CHOOSECOLOR )
je suis sous nux , donc peu pas t'aider plus.
@++
Publié : mar. 28/juil./2009 19:21
par Fortix
Merci beaucoup @Cpl.Bator

Publié : mer. 29/juil./2009 21:02
par Fortix
Code : Tout sélectionner
#CC_RGBINIT = 1
#CC_FULLOPEN = 2
#CC_PREVENTFULLOPEN = 4
#CC_SHOWHELP = 8
#CC_ENABLEHOOK ;= 10
#CC_ENABLETEMPLATE; = 20
#CC_ENABLETEMPLATEHANDLE; = 40
#CC_SOLIDCOLOR = 80
#CC_ANYCOLOR = 100
Dim dwCustClrs.i(15)
lpChoosecolor.CHOOSECOLOR
With lpChoosecolor
\lStructSize = SizeOf(CHOOSECOLOR)
\hwndOwner = #PB_Ignore;ju;Handle de la fenetre mere
\rgbResult = #Gray ;couleur par default
\lpCustColors = @dwCustClrs(0) ; les couleurs perso
\flags = #CC_ANYCOLOR | #CC_RGBINIT | #CC_FULLOPEN
EndWith
Debug lpChoosecolor\lpCustColors
Prototype.l protohue(clrt)
If OpenLibrary(0, "comdlg32.dll")
ChooseColorA.protohue=GetFunction(0, "ChooseColorA")
Debug ChooseColorA( *struct.CHOOSECOLOR )
EndIf
; If OpenLibrary(0, "comdlg32.dll")
; *capAddress = GetFunction(0, "ChooseColorA")
;
; If *capAddress
; hWndC.f = CallFunctionFast(*capAddress, "ChooseColorA",@lpChoosecolor.CHOOSECOLOR):Debug "Ok"
; Debug hWndC
; EndIf
; EndIf
j'ais probablement fait une faute
Publié : mer. 29/juil./2009 21:34
par Anonyme
remplace
Debug ChooseColorA( *struct.CHOOSECOLOR )
par
Debug ChooseColorA( lpChoosecolor )
Si un windozien pouvais lui venir en aide pour les tests ^^
Publié : mer. 29/juil./2009 22:02
par Thyphoon
Je viens de faire des essais et sans réussite j'ai trouvé un code (hélas pas en pb)qui pourrait peut être aidé ... Moi je sais que les API et MSDN j'y vais a reculons ...tellement les choses son compliqué pour faire des choses simple ... Il y a peut être une raison a ça, mais je ne l'ai toujours pas trouvé ...
Code : Tout sélectionner
Option Compare Database
Dim RGB1 As Long 'Détail.backColor
Private Type CHOOSECOLOR
lStructSize As Long
hWndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As String
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Declare Function CHOOSECOLOR Lib "comdlg32.dll" Alias "ChooseColorA" _
(pChoosecolor As CHOOSECOLOR) As Long
Private Function ShowColor() As Long
Dim CustomColors As Byte
Dim CC As CHOOSECOLOR
Dim Custcolor(16) As Long
Dim lReturn As Long
'set the structure size
CC.lStructSize = Len(CC)
'Set the owner
CC.hWndOwner = Me.hwnd
'set the application's instance
CC.hInstance = Application.hWndAccessApp
'set the custom colors (converted to Unicode)
CC.lpCustColors = StrConv(CustomColors, vbUnicode)
'no extra flags
CC.flags = 0
RGB1 = Section(acDétail).BackColor 'mise en mémoire arrière-plan courant
'Show the 'Select Color'-dialog
If CHOOSECOLOR(CC) <> 0 Then
ShowColor = CC.rgbResult
CustomColors = StrConv(CC.lpCustColors, vbFromUnicode)
CustomColors = StrConv(CC.lpCustColors, vbUnicode)
Else
ShowColor = RGB1 'par défaut RGB1=128; RGB1=RGB1 Précédent (si annulation, sinon le fond est NOIR.
End If
'RGB1 = ShowColor
End Function
Private Sub Command0_Click()
'MsgBox ShowColor '(pour afficher le code RGB en mode MsgBox)
Section(acDétail).BackColor = ShowColor
End Sub
Publié : mer. 29/juil./2009 22:21
par Fortix
merci pour votre aides
je sais, jsuis à plaindre
je vais de suite analyser le code visual basic de @Thyphoon
encore merci à vous
