Re: Mouse movement within CStatic/Picture box

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



MD wrote:
Thanks Scott, Tom , Alir, Arman:

Like I told I am just a beginner in MFC programming. I started on a
wrong foot with handling ON_STN_CLICKED. Thats the event for clicking
on Static controls within a dialog.

But I was able to work this out using Alir's method.Now I am able to
draw a rectangle on picture box using the following code, now the
problem is as I move the mouse there will be a track of rectangles
over the picture box, I was wondering if you guys can suggest a method
where I can refresh the picture box or reset the previous rectangle,
so that as I drag only one final rectangle remains .

void CPictureBox::OnPaint()
{
CPaintDC pDC(this); // device context for painting

RECT rect;
GetClientRect(&rect);
if(m_Tracking==TRUE)
{
pDC.SelectStockObject(HOLLOW_BRUSH);
pDC.Rectangle(m_Rect); //rectangle
coordinates captured in mousedown/up and move events

}
else
if(m_sBitmap!="")
ShowBitmap(&pDC);
}

Thanks for the help,


OnPaint must paint the entire picture box, not just add to it. The reason is that the image on a window can be destroyed by other popup windows, and Windows calls OnPaint when you need to fix it. So you should make it always paint the bitmap and then optionally add the tracking rect. In fact, if you don't currently have a bitmap you should draw a blank background rect to "fix" an empty box. Otherwise an image of the other popup window will remain.

By the way, if(m_Tracking==TRUE) is very poor style and error-prone: Use

if (m_Tracking)
....

--
Scott McPhillips [MVP VC++]

.



Relevant Pages

  • Re: screenshots?
    ... > picture box in order to save it. ... As RECT) As Long ... Now your picture box will contain your form's snapshot. ... Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ...
    (comp.lang.basic.visual.misc)
  • Re: Problems With Pictures
    ... The cropping rectangle opens. ... > ratio and it wouldn't let me. ... >>> They are at the top and bottom of the picture? ...
    (microsoft.public.windowsxp.photos)
  • Re: DrawText fails when attempting to retrieve string extents
    ... "Phil Taylor" wrote in message ... > DT_CALCRECT is filling Right and Bottom to make the rectangle big enough. ... list that will allow the specification of a Rect. ...
    (microsoft.public.win32.programmer.directx.graphics)
  • Re: Clip capture
    ... pctChart.Cls which contains the chart to copy into memory, ... Not the effect I want when drawing the rectangle. ... the picture disappear in the example provided as it does with my drawn chart ... One is CLIP. ...
    (comp.lang.basic.visual.misc)
  • Re: Clip capture
    ... > clipping rectangle, first ensuring that the picture box's container (the ... Okay. ... > picture box on the other Form. ... This will clear out any existing bitmap ...
    (comp.lang.basic.visual.misc)