Draw is sent when a part of the Area needs to be drawn. dp will contain a drawing context to draw on, the rectangle that needs to be drawn in, and (for a non-scrolling area) the size of the area. The rectangle that needs to be drawn will have been cleared by the system prior to drawing, so you are always working on a clean slate.
If you call Save on the drawing context, you must call Release before returning from Draw, and the number of calls to Save and Release must match. Failure to do so results in undefined behavior.
Draw(a *Area, dp *AreaDrawParams)