Have a look at Converting everything to and from wxString . Your problem was, that stored data in wxCharBuffer are freed at the end of the function, so your foo pointer becomes invalid. I recommend: inline wxString ToWX(char* char_array, int length){ return wxString::FromUTF8(char_array, length); } ...
Instead of overwriting the main loop, you could handle idle events in your infoscreen window. You can use wxIdleEvent::RequestMore to repeat idle events again and again, so it's similar to your infinite loop, but handles other events between.
Core Graphics (Apple) seems not to support path gradients, so that could be the reason why wx doesn't support it too.
For windows and unix you can do it the way i described. A cross-platform solution would be using OpenGL.
Looking into wxGraphicsContext it seems that just linear and radial gradients with multiple stops are available in wxWidgets. For a gradient path, you should use the native renderer directly, see wxGraphicsContext::GetNativeContext . In GDI+, PathGradientBrush is what you're looking for. In Cairo, c...