Define the following global variables:
Dim ClrHandle As Long
Dim cnvParam As CONVERSION_PARAMS
Dim wtPoint As WHITEPOINT 'this needs to be defined in VB, because its member in CONVERSION_PARAMS can't be accessed since it is a pointer and not a structure
Dim RGBColor(3) As Byte
Dim ColorSpace(4) As Byte
Set the conversion options by filling a CONVERSION_PARAMS structure:
wtPoint.nWhitePoint = CIELAB_D50
wtPoint.xWhite = 0
wtPoint.yWhite = 0
cnvParam.uStructSize = Len(cnvParam)
cnvParam.nQuantization = 8
cnvParam.nMethod = USE_CUSTOM_ICC
cnvParam.nActiveMethod = USE_CUSTOM_ICC
cnvParam.pCmykParams = 0
cnvParam.pLabParams = 0
cnvParam.pYuvParams = 0
cnvParam.sDstInputTable(0) = 0
cnvParam.pWpoint = VarPtr(wtPoint)
cnvParam.pMemInputProfile = 0
cnvParam.pMemOutputProfile = 0
Dim str1 As String
str1 = "C:\\MyRGBProfile.ICM"
Dim i As Integer
For i = 0 To Len(str1) - 1
cnvParam.sInputProfile(i) = Asc(Right(str1, Len(str1) - i))
Next i
str1 = "C:\\MyRGBProfile.ICM"
For i = 0 To Len(str1) - 1
cnvParam.sOutputProfile(i) = Asc(Right(str1, Len(str1) - i))
Next i
Initialize the color conversion handle with L_ClrInit():
L_ClrInit ClrHandle, CCS_CMYK, CCS_RGB, cnvParam
Now, do the conversion:
ColorSpace(0) = 100
ColorSpace(1) = 100
ColorSpace(2) = 100
ColorSpace(3) = 100
L_ClrConvert ClrHandle, ColorSpace(0), RGBColor(0), 1, 1, 0, 0
At the end, free the color conversion handle:
L_ClrFree ClrHandle