To encourage programmers to experiment with canvasGUI and extend or customize its functionality I have previously posted discussions on how to create user defined controls.
canvasGUI 3 : user-defined controls (1)
canvasGUI 3 : user-defined controls (2)
To supplement these I have created a guide that describes the inner workings of canvasGUI. Hopefully you will find this guide interesting even if you don’t use the information directly.