Common dialog : Color
Le code suivant vous permet d'afficher la boite de dialogue "Couleur" par API:
Option Explicit 'Définition des flag choisis par l'utilisateur Public Enum FlagsEnum CC_ANYCOLOR = &H100 CC_FULLOPEN = &H2 CC_PREVENTFULLOPEN = &H4 CC_RGBINIT = &H1 CC_SHOWHELP = &H8 CC_SOLIDCOLOR = &H80 End Enum '----- Définition des API ----- Private Type CHOOSECOLOR_STRUCT 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 Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLOR_STRUCT) As Long 'Variables utilisées Private CustomColors(15) As Long 'Procédure d'effacement des couleurs personalisées Sub ClearCustomColors() Dim i As Byte 'On boucle sur le tableau et on définit toutes les couleurs à Blanc For i = 0 To 15 CustomColors(i) = vbWhite Next i End Sub Property Get CustomColor(index As Byte) As Long 'Retourne une des 16 couleurs personnalisées disponibles If index < 16 then CustomColor = CustomColors(index) End If End Property Property Let CustomColor(index As Byte, Value As Long) 'Définit une des 16 couleurs personnalisées disponibles If index < 16 then CustomColors(index) = Value End If End Property Public Function GetColor(Optional InitColor As Long = vbWhite, Optional Flags As FlagsEnum, Optional hWnd As Long) As Long 'Structure principale Dim Choosecolorstruct As CHOOSECOLOR_STRUCT 'Définition des paramètres entrés par l'utilisateur dans la structure Choosecolorstruct.Flags = Flags Choosecolorstruct.hwndOwner = hWnd Choosecolorstruct.rgbResult = InitColor Choosecolorstruct.lStructSize = Len(Choosecolorstruct) Choosecolorstruct.lpCustColors = VarPtr(CustomColors(0)) 'Si la couleur a pu être sélectionnée If ChooseColor(Choosecolorstruct) Then GetColor = Choosecolorstruct.rgbResult 'on retourne la couleur Else GetColor = -1 'sinon, on retourne -1. End If End Function