image in picture control not displayed properly after moving

dumbncool's Avatar, Join Date: May 2009
Newbie Member
Hello, I'm writing a MFC application to move a picture control when i press the "Next" button. (Please see attached screen-captures)

There is a dialog box on which there are 2 picture controls. When I press the Next button, the left picture control should move on top of the right picture control.
You can see I kept the code for moving the picture control in a for loop because I wanted a sort of animation effect.

As you can see from the attachments, after I move the image there are some vertical lines appearing. How do I make them go away?


Thank you.


Code:
void CShabbirDlg::OnBnClickedButton2()
{
    // TODO: Add your control notification handler code here
    if (pageNum <= 10) {
        pageNum++;

        CRect RRect, LRect;

        //Get the coordinates of the right and left picture control
                picPreview2.GetWindowRect(&RRect);
        picPreview.GetWindowRect(&LRect);

        //Move the left picture control to the right
        for (long int i = LRect.left; i > RRect.left; i -= 20) {
            picPreview.MoveWindow(i , LRect.top, LRect.Width(), LRect.Height());
        }
    }
    

}
Attached Images
File Type: jpg before-move.JPG (133.3 KB, 1 views)
File Type: jpg after-move.JPG (143.6 KB, 2 views)

Last edited by shabbir; 30May2009 at 10:35.. Reason: Code blocks
SaswatPadhi's Avatar, Join Date: May 2009
~ Б0ЯИ Τ0 С0δЭ ~
Try updating the window after the move :

Code: c++
void CShabbirDlg::OnBnClickedButton2()
{
      // TODO: Add your control notification handler code here
      if (pageNum <= 10) {
            pageNum++;
            CRect RRect, LRect;

            //Get the coordinates of the right and left picture control
            picPreview2.GetWindowRect(&RRect);
            picPreview.GetWindowRect(&LRect);

            //Move the left picture control to the right
            for (long int i = LRect.left; i > RRect.left; i -= 20) {
                  picPreview.MoveWindow(i , LRect.top, LRect.Width(), LRect.Height());
            }
            this->Invalidate();
      }
}