• 締切済み

VC++2010(MFC)OnDraw以外での描画

xxxView.cppファイル内のOnDraw以外の部分で、以下のコードを書きビルドしましたが、「'CWnd::GetDC' : 静的でないメンバー関数の呼び出しが正しくありません」というエラーと「'CWnd::ReleaseDC' : 関数に 0 個の引数を指定できません」というエラーが出てしまい、描画できません。エラーの出ない、正しいコードを教えて下さい。 CPaintDC* pDC; CWnd::GetDC(); pDC->TextOut(10,10,"テスト"); CWnd::ReleaseDC();

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

まず最初の問題として、CPaintDCはWM_PAINTへの応答(OnPaint)でしか使えないという事があります。 http://msdn.microsoft.com/ja-jp/library/a48eab8d%28v=VS.100%29.aspx 「OnDraw以外の」という書き方が気にかかったので確認しているのですが、このコードはOnPaintもしくはOnPaintから呼び出される関数内にありますか? コード自体の問題についてはMFCやC++の基本をちゃんとやった方がいいと思いますが…… ・pDCが空なのでオブジェクトを作らなければTextOutは実行できません。 pDC = new CPaintDC(); ・GetDCはエラーの通り静的なメンバ関数ではなく、描画のために作成したオブジェクトから呼ぶ必要があります。今回はCPaintDCのオブジェクトになります。 pDC->GetDC(); ・ReleaseDCの引数には使用を終えた描画オブジェクトを渡します。 CWnd::ReleaseDC(pDC);

関連するQ&A