MFC SDI アプリケーションがあり、別のダイアログからドキュメント領域にアクセスして、何かを描画できるようにしたいと考えています。アクセスしたいものは次のとおりです。
void CProjView::OnDraw(CDC* pDC)
さらに良いことに、ダイアログから直接ドキュメント ビューを描画したいと考えています。どうやってやるの ?
ドキュメントに何かを描きたい場合は、おそらくドキュメントにあるはずです。CDocumentクラスへのポインタを取得し、CDocument::UpdateAllViewsを呼び出します。順番にを呼び出しますCView::OnUpdate
。そこでフラグを設定して、を呼び出しますInvalidate()
。これOnDraw()
で、フラグを設定して新しいオブジェクトで画面を再描画します。
クライアント領域のデバイスコンテキストを取得して描画を開始する方法は他にもありますが、ウィンドウを最小化して元に戻すと、新しいペイントが失われるという問題があります。実際、OnDraw()関数の外部で行うことはすべて失われます。したがって、OnDraw()関数ですべての描画を行う必要があります。上記は、doc/viewアーキテクチャを使用して体系的に行う方法です。