宜しくお願いします。
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()していますが
間違いがあるのでしょうか。
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() を呼んでないとか。
nさんありがとうございました。
>あ、もしかして GetDC() に対応する ReleaseDC() を呼んでないとか。
ReleaseDC()を呼んでいませんでした。