This could be made massively less ugly and more readable by typedef'ing the function pointer types by the way. Then one could just write:
case 13: mv->val.f13 = (F13)func; break;
As a C programmer I got to say people in general don't use typedef for function pointer types often enough. The types are so ugly and verbose, they should be typedef'ed by default.