Search code examples
c++-cliwindows-forms-designerarrayfire

Pass unmanaged data around in managed code?


I'm building a Windows Form application that controls 3D volume rendering using an ArrayFire array object. The array is unmanaged. In the form constructor, I load and render the volume.

I have a Trackbar that controls the opacity of the volume and a corresponding scroll event handler. However, I can't figure out how to pass the volume array to the Trackbar scroll event handler so I can re-render the volume.

I can't make the volume array an attribute of the Form because, apparently, managed classes cannot have unmanaged attributes.

What's the best way to do this?


Solution

  • A managed class cannot have a field that is an unmanaged type, but it can have a field that is a pointer to an unmanaged type. Stick a * at the end of your unmanaged type, and you should be able to pass it to whatever methods you want, and store it wherever you want.