Paul,
And don't get too hung up on the "visual" classes either. Just because the class is created in the visual designer and stored in a vcx/vct classlib doesn't mean that it needs to be a "visual" object when your app is running. BizRule objects are one example. I use most of these classes being derived from a generic cObject class which is derived from Container. I really prefer the convienence of the property sheet and method window compared to having everything in one long prg file.
The only time I type out a DEFINE CLASS class is for a small sample to answer a question someone has posted.