リソース不足発生について

[戻る]
[E-Mail] 2002/10/04(金) 19:09:12
宜しくお願いします。

VC++ MFCです。

SetTimerを使って描画(グラフ表示)を何度もを呼び出ています。
描画は色を変えて10本のグラフをPenで書いています。

描画処理は以下のようになっています。
リリース不足で止まってしまいます。

描画処理
CDC* pDC = m_Graf.GetDC()

for( retu = 0; retu  < 10; retu++ ) {
    CPen myPen1( PS_SOLID,2,RGB(x,y,z))
    pDC->SetBkMode( GM_COMPATIBLE );
    CPen* pOldPen1;
    pOldPen1 = pDC->SelectObject(&myPen1);
        ・
        ・
      pDC->MoveTo( a, b );
    pDC->LineTo( aa, bb);
        ・
        ・
    pDC->SelectObject(pOldPen1);
    myPen1.DeleteObject();
}

以上のように毎回DeleteObject()していますが
間違いがあるのでしょうか。

n [E-Mail] 2002/10/04(金) 19:50:36
void CxxxDlg::OnPaint() 
{
 if (IsIconic())
 {
   //...
 }
 else
 {
  CPaintDC dc(this);
  for( int i = 0; i < 10; i++ )
  {
   CPen myPen1( PS_SOLID, 2, RGB( 0, 0, 0 ) );
   dc.SetBkMode( GM_COMPATIBLE ); // これは SetGraphicsMode()?
   CPen* pOldPen1 = dc.SelectObject( &myPen1 );

   dc.MoveTo( 0, 0 );
   dc.LineTo( 100, 100 );

   dc.SelectObject( pOldPen1 );
   myPen1.DeleteObject(); // これは不要?
  }
 }
}

...Windows Me, VC++ 6.0 SP5, MFCダイアログ において
上記のようにコードを書いてみたところ、全く何のエラーも出なかったのですが...

あ、もしかして GetDC() に対応する ReleaseDC() を呼んでないとか。

2002/10/07(月) 11:28:14
[[解決]]
nさんありがとうございました。
 
>あ、もしかして GetDC() に対応する ReleaseDC() を呼んでないとか。

ReleaseDC()を呼んでいませんでした。

古いスレッドには追加発言できません。