[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 689
  • Last Modified:

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)
0
JoyBurke
Asked:
JoyBurke
  • 5
  • 4
1 Solution
 
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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
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
 
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

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now