Well, I can't provide any source, and don't know of any specific sites dealing with that type of thing. I can give you a few suggestions though.
What you are trying to create is an object-oriented, or vector paint program. In other words each graphic construct is represented internally by a virtual object, and is rendered to a bitmap for output to a display or printer. This is in contrast to a simple raster paint program, such as the one included with Windows, which just colors in pixels based on drawing activity. The latter scheme makes it impossible to manipulate individual drawing objects, because there is nothing to segregate them from one another.
Basically when the user "draws" they create an object, such as a rectangle. Instead of just drawing the pixels to the bitmap you store the rectangle's properties, such as the coordinates of the top-left corner and its size. In addition you can keep track of the thickness of the lines, line color, interior fill, etc.
Then when the user is in "select" mode, your software needs to map screen coordinates to objects. You will have to decide if the user must click on what is the border of the object, or if they can select by clicking on the interior as well.
You will also need a layer system to control the order of objects, which determines which objects are on top of other objects. That is pretty simple, as you just store all the objects in a linked list, with one end of the list representing the bottom, and the other the top. When drawing you render from bottom to top, when determining what the user clicked on, you do it in reverse.
Maybe that will get you on the right track.
Dan East