If you stop calling IGUIEnvironment::drawAll then it would also stop drawing the gui. That function just goes over all elements which have been added and draws them as long as their visible flag is set. So that's more or less what you do in DirectX when you either call drawing functions or don't, just slightly more automated.
You can put any function you want in any class. Calling them OnEvent and passing on the same parameters as in the Irrlicht evenreceiver just helps to make it more clear what it does and a little easier to pass events on to those classes. Take a look at that link I posted, it's just calling other classes, but doing so again slightly automated to make it easier to add or remove further event classes instead of hardcoding it all.
You can set a element parent either when creating a gui element or later on you can call addChild for the parent to add an existing element to it.
There is a IGUIInOutFader element, but I think it's for full-screen fading. To fade just elements you can work with the skin-colors. Check the gui example in the Irrlicht examples, I think that does that.
Making buttons do stuff
Re: Making buttons do stuff
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm