For instance, widgets have the concept of opacity which the library takes advantage of at draw time to reduce flicker. Control surfaces are simply drawn from the back to the front without any regard to opacity. True, it would be possible to implement opacity in control surfaces, but that would require extra code and that responsibility lies with the application developer. Other widget level services not predicated on control surfaces include containment and focus. Another major downside is that control surfaces are very raw elements and can only provide the behavior implemented by the developer creating them.
Control surfaces are a fine tool, but like any other development tool, they have their place.
And this is a topic that we will discuss in more detail in future installments. To get started, try compiling and running the following little demo app. Feel free to tinker around with it and browse the control surface documentation in the link to the right. The overview of the APIs should also give you a bit more exposure to the technical details of control surfaces. QNX Software Systems Ltd. All other trademarks belong to their respective owners.