Windows10のMFCのCFormViewの描画に関する質問です。 下記のコードの最後に書きました、dc.DeleteDC();で 例外がスローされます。

Windows10のMFCのCFormViewの描画に関する質問です。 下記のコードの最後に書きました、dc.DeleteDC();で 例外がスローされます。 Q1)『dc.DeleteDC();』は必要ないのでしょうか? =============== void CTtimerView::OnPaint(){ //CPaintDC dc(this)はここでは機能する。 CPaintDC dc(this); // device context for painting //CClientDC dc(this); // int nOld = dc.SetBkMode(TRANSPARENT); int nOld = dc.SetBkMode(OPAQUE); dc.SetBkColor(RGB(0, 0, 0)); dc.SetTextColor(RGB(255, 0, 0)); dc.SelectObject(m_fnt); CString str; static int no = 0; for (int i = 0; i < 4; i++) { str.Format(_T("strArray i=%d no=%d"), i, no++); dc.TextOutW(400, 170+17*i, str); } dc.SetBkMode(nOld); // dc.DeleteDC(); //例外がスローされました。 } ====================== 以上、よろしくお願いします。

C言語関連17閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

1

CPaintDC dc(this);で確保した dcは デストラクタで後始末をしますので 自前で DeleteDCを呼ぶ必要がありません というか 自前でやってしまうと ハンドルの2重解放とか 厄介なことになるため ASSERTで 警告しているようです

1人がナイス!しています

ThanksImg質問者からのお礼コメント

毎度お世話になります。 了解です。 毎度、丁寧明快な回答ありがとうございます。 以上

お礼日時:9/20 22:32