Andy,
All you need to do is cast the pointer to the appropriate type when passing it arround. Here is a small example:
void *temp;
temp = malloc(sizeof(double));
GetCtrlVal (panelHandle, PANEL_BPM, (double *)temp);
DebugPrintf("The value is...%f", *((double *)temp));
SetCtrlVal (panelHandle, PANEL_BPM, *((double *)temp));
free(temp);
Make sure that you allways have the required memory space allocated for the data type that you are using.
Hope that helps.
Regards,
Juan Carlos
N.I.