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