When should the user set the HDC handle?

It must be mapped properly (as in OnPaint() ). This is for mapping mouse positions and for painting helper lines (dotted lines, ellipse) and crop marks. It must be set on every call of the mouse function, because the user can not decide beforehand if the function will or will not paint the objects.