Dragging graphics with mouse

I've created a scrollview in which graphic boxes, lines, charts,  etc. are drawn on the screen. I've been drawing them by overriding the OnDraw of the view and passing the pDC to various object classes I've created to draw the objects.

Now I'm trying to add some functionality by allowing the user to click and drag the objects. I'm thinking that redrawing every time the mouse moves (using the windows message) will cause major flicker and is a bad idea. I need the objects (and a mouse popup) to follow the cursor.

My question is, what would be the best technique to allow users to drag drawn objects? Should I just invalidate a portion of the window and re-draw?

(note: point value higher since I need the solution quickly. probably not very difficult)
JoyBurkeAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

AlexFMCommented:
Check out MFC sample DRAWCLI. It shows how to do this and redraws the screen by optimal way using memory DC and minimizing the clipping area. It has all you need to drag graphic objects except automatic scrolling during dragging. I will try also to find the sample which shows automatic scrolling.
0
AlexFMCommented:
About automatic scrolling:

http://www.microsoft.com/msj/0898/wicked0898.aspx

This sample implements automatic scrolling by timer in tree control, but you can get an idea how to do this in scroll view.
0
JoyBurkeAuthor Commented:
That example uses OleDataObjects. Do I need to learn to use OleObjects to do this?

Previously I had CObjects stored in a list. They are created only for the view and don't need to be saved or have extensive capability.

The example is helpful, but I'm having a hard time picking through it to find what I need to use.
0
Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

AlexFMCommented:
And the last point:

DRAWCLI makes full redrawing of dragged object. Another approach is drawing only hatched rectangle during dradding and redraw the full object only when mouse button is released. To do this check out MFC class CRectTracker and MFC sample TRACKER.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
AlexFMCommented:
No, ignore all OLE stuff and read only about simple graphic objects like rectangles.
If you need a fast solution, use CRectTracker.
0
JoyBurkeAuthor Commented:
I'm a beginner and having a hard time picking through all these examples.

what is a hatched rectangle and how does it get drawn?
0
JoyBurkeAuthor Commented:
Could you give me a basic pseudocode? (ie: On mouse move, redraw just the rectangle by....)
0
AlexFMCommented:
This is a thin dotted rectangle which is moved with the mouse showing current position of the object. When user releases mouse, object itself is redrawn on the new place. Build the TRACKER sample and see how it works. CRectTracker class handles all implementation details. This is really fast solution.
0
JoyBurkeAuthor Commented:
Thanks for all your help and patience!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.