For the cupcakes, preheat the oven to180C/350F/Gas 4. Line a muffin tin with cases.
Melt the butter over a low heat in a small pan, pour it into a bowl with the sugar, oil, cornflour (or arrowroot) and vanilla. Beat well until smooth, then whisk in the eggs followed by the milk and cream.
Sift and beat the flour and baking powder into the butter mixture in batches until smooth.
Spoon the mixture into the paper cases until about two-third full, then bake for 20-25 minute or until the top is springy to the touch. Remove the cupcakes from the oven and set aside to cool.
Meanwhile, for the buttercream, mix the icing sugar, glucose, condensed milk, flavouring and butter with an electric mixer in a bowl until smooth and light, then beat in the baking margarine until smooth.
In a jug, stir the icing sugar into the cream until dissolved, then add any colouring or flavouring you want, or just leave it plain. Beat this gradually into the butter mixture until light and fluffy. (This buttercream keeps very well covered at room temperature for 2-3 days and can be warmed slightly and re-beaten if the texture is too firm.)
To decorate the cupcakes, you can either dollop on some icing and swirl it with a knife or use a piping bag. Either fill a disposable piping bag with the icing and snip off the end or fill a piping bag fitted with a large star nozzle.
To pipe on the icing, start at the outside edge piping round the edge of the cupcake in a spiral towards the centre. When you reach the top, pull up quickly to finish the swirl. Decorate with sprinkles.