Eureka! 1) Create a new cmsCIEXYZ structure this way:
CIE_XYZ MyXYZ; 2) Populate its members with test values: MyXYZ.CIE_X = 0.9666; MyXYZ.CIE_Y = 1.0; MyXYZ.CIE_Z = 0.8555; 3) Create boolean variable for cmsWriteTag return code: bool Result; 4) Allocate unmanaged memory for MyXYZ: IntPtr Pointer = Marshal.AllocHGlobal(Marshal.SizeOf(MyXYZ)); 5) Ask CLR to "move" the data from managed memory to unmanaged memory: Marshal.StructureToPtr(MyXYZ, Pointer, true); 6) I execute the call to cmsWriteTag: Result = cmsWriteTag(hProfiler, 0x77747074, Pointer); 7) The call succeeded! I got "Result = true"! 8) To test the change in XYZ values, I make a new call to cmsReadTag: IntPtr Pointer = IntPtr.Zero; Pointer = NativeMethods.cmsReadTag(hProfile, 0x77747074); MyXYZ MediaWhitePoint = (MyCIEXYZ)Marshal.PtrToStructure(Pointer, typeof(MyCIEXYZ)); 9) And voilĂ ! These are the new XYZ values!!!! // X = 0.9666 // Y = 1.0 // Z = 0.8555 10) I love programming with LittleCMS -- thank YOU Marti Maria!!!! I still have a TON of questions... Once I modified the monitor profile, is there a way to "Save As"? Save the profile under a new name? / Roger Breton ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Lcms-user mailing list Lcms-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lcms-user