本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] SetScaleToFitSize を呼ぶと Assertion が発生

文書番号: 402877

最終更新日: 2004/04/27


この資料は以下の製品について記述したものです。


概要

この資料は CFormView の OnInitialUpdate で SetScaleToFitSize を呼ぶと
Assertion が発生することについて説明したものです。

詳細

CFormView の OnInitialUpdate で SetScaleToFitSize を呼ぶと以下のエラーが発生し ます。
     File viewscrl.cpp, Line 455, Assertion Failed!

原因

CFormView の中でまだビューウィンドウが展開されす、CRect ( 0,0,0,0 ) の状態
のまま SetScaleToFitSize がサイズを計算しているためです。

対処方法

SetScaleToFitSize でビューがスケーリングされる前に、親フレームの
RecalcLayout を呼んでください。
     GetParentFrame()->RecalcLayout();
また OnInitialUpdate が作られるときにフレームワークが RecalcLayout を呼ん
でいることに注意してください。

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.
  }
この問題は Microsoft Foundation Classes (MFC) version 2.0 で発生します。
Foundation Classes version 2.5 以降では修正されました。

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: KBBUG VC10 VC15 KB402877
Technology: kbAudDeveloper kbVCsearch

inserted by FC2 system