public static unsafe int SDL_ShowMessageBox([In()] ref SDL_MessageBoxData messageboxdata, out int buttonid) { var data = new INTERNAL_SDL_MessageBoxData() { flags = messageboxdata.flags, window = messageboxdata.window, title = INTERNAL_AllocUTF8(messageboxdata.title), message = INTERNAL_AllocUTF8(messageboxdata.message), numbuttons = messageboxdata.numbuttons, }; var buttons = new INTERNAL_SDL_MessageBoxButtonData[messageboxdata.numbuttons]; for (int i = 0; i < messageboxdata.numbuttons; i++) { buttons[i] = new INTERNAL_SDL_MessageBoxButtonData() { flags = messageboxdata.buttons[i].flags, buttonid = messageboxdata.buttons[i].buttonid, text = INTERNAL_AllocUTF8(messageboxdata.buttons[i].text), }; } if (messageboxdata.colorScheme != null) { data.colorScheme = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SDL_MessageBoxColorScheme))); Marshal.StructureToPtr(messageboxdata.colorScheme.Value, data.colorScheme, false); } int result; fixed(INTERNAL_SDL_MessageBoxButtonData *buttonsPtr = &buttons[0]) { data.buttons = (IntPtr)buttonsPtr; result = INTERNAL_SDL_ShowMessageBox(ref data, out buttonid); } Marshal.FreeHGlobal(data.colorScheme); for (int i = 0; i < messageboxdata.numbuttons; i++) { SDL_free(buttons[i].text); } SDL_free(data.message); SDL_free(data.title); return(result); }
private static extern int INTERNAL_SDL_ShowMessageBox([In()] ref INTERNAL_SDL_MessageBoxData messageboxdata, out int buttonid);