Knowledge Base |

# FIX: Assertion, VIEWSCRL.CPP, Line 455 with SetScaleToFitSize

Article ID: 113588

Article Last Modified on 11/21/2006

APPLIES TO

- Microsoft Foundation Class Library 4.2, when used with:
  - Microsoft Visual C++ 1.0 Professional Edition

This article was previously published under Q113588

## SYMPTOMS

Calling SetScaleToFitSize in OnInitialUpdate of a CFormView derived class causes the following assertion to fail:
File viewscrl.cpp, Line 455, Assertion Failed!

## CAUSE

Because the view window has not yet been displayed, SetScaleToFitSize() uses the size of the CFormView. Because the CFormView is created with size CRect(0,0,0,0), the view size is miscalculated.

## RESOLUTION

To set the view window size before calling SetScaleToFitSize, call RecalcLayout on the parent frame. For example:

       GetParentFrame()->RecalcLayout();

See the sample code below for an example of this.

## STATUS

Microsoft has confirmed this to be a problem in the Microsoft Foundation Classes (MFC) version 2.0. This problem was corrected in the Microsoft Foundation Classes version 2.5.

## MORE INFORMATION

The call to RecalcLayout in OnInitialUpdate is no longer needed with MFC version 2.5 because the framework takes care of calling RecalcLayout in response to the WM_CREATE message before the call to OnInitialUpdate is made.

### Sample Code

    /*  Compile options needed: none
    */

    void CMyFormView::OnInitialUpdate()
    {
        CFormView::OnInitialUpdate();     // Base class initialization.

        //GetParentFrame()->RecalcLayout  // Uncomment to fix. No need to
                                          // call if this is version 2.5.
        CSize mysize(100,100);

        SetScaleToFitSize(mysize);        // This will ASSERT in version
                                          // 2.0 unless RecalcLayout is
                                          // called.
    }

Additional query words: 1.00 2.00 2.10 kbNoUpdate

Keywords: kbbug kbdocview kbfix kbvc150fix KB113588