Chapter 13: GDI+ Controls
Overview
Owner-drawn controls are one of the most ambitious projects a developer can undertake. This is not because they are conceptually tricky, but because a moderately sophisticated control needs a great deal of basic code just to handle all aspects of its appearance. If you can create a control using composition (i.e., a user control) or by inheriting from a similar control class, as shown in Chapter 7, you'll save yourself a great deal of effort. On the other hand, if you need complete control over drawing and behavior, or you want to introduce some of the unusual GDI+ features to your user interface, you need to create a control that performs its painting manually.The prime advantage to GDI+ controls is freedom. The prime disadvantage with GDI+ controls is that they aren't nearly as autonomous as prebuilt controls. For example, with custom GDI+ controls you need to handle the following details manually:
Scrolling support
Focus cues (i.e., indicating when the control has focus)
The "pushed" state appearance for a button control
Special cues or "hot tracking" appearance changes when the mouse moves over the control
Hit testing to determine if a click was made in an appropriate area
This chapter introduces several example controls, and shows how they confront these problems and add a few visual treats.