• ベストアンサー

ピクチャーコントロールのデバイスコンテキストを取得するためには?

すみません、解決しませんでした・・・ C2005についてです ピクチャーコントロールのデバイスコンテキストを操作するためには どうすればよいでしょうか? void CMainFrame::OnButton() { CMDIChildWnd *mc; mc=MDIGetActive(); CStatic* pStatic=(CStatic*)mc->GetDlgItem(IDC_PICTURE1); CClientDC myPictDC(pStatic); myPictDC.TextOutA(0,0,"aiueo"); } この様にすれば、文字が出力されますが、 モニターの画面上の左上 (0,0)の位置に 出力されてしまいます。 アクティブになった、この子ウィンドウの上にある ピクチャーコントロールに 描画するためには どうすればよいでしょうか? MDIで、複数のウィンドウのうちで アクティブになった ものだけを 操作したいのです。 ピクチャーコントロールの上に描画するためには どうすればよいでしょう? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.4

void CMainFrame::OnButton() { CXXXView::PicByouga1(); } 違う違う。 そうじゃなくて、メッセージマップのほうでViewにむすびつけます。 void CXXXXView::OnButton1() { : : } VC++6だと、クラスウィザードで、クラス名のところでCXXXViewを選んでやればよいはず。

wxy
質問者

お礼

ありがとうございました。 ビューに記入すれば良かったのですね おっしゃるとおり、操作できました。 ありがとう!

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

うまく行かない原因を探索しましょう MFCのアサーションが出るのですか? 現状 動作させた場合何が起きるのでしょう > mc=MDIGetActive(); にブレークポイント設定してステップ実行してみましょう > CStatic* pStatic=(CStatic*)mc->GetDlgItem(IDC_PICTURE1); が失敗した場合 pStaticは NULLになります 失敗する場合は アクティブな子ウィンドに IDC_PICTURE1というIDの子コントロールが存在しない場合です

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

#1です。 というか、CFormViewですよね。多分。 なら、OnButton()ハンドラをMainFrameじゃなくて、Viewに結びつけるのが一番楽。

wxy
質問者

補足

はい、CFormViewです ダイアログバーの上のボタンをクリックして、 ビュー上のピクチャーコントロールに 描画したいのです。 void CMainFrame::OnButton() { CXXXView::PicByouga1(); } ボタンをクリックして、 void CXXXView::PicByouga1(void) { CDC* pDC=picture1.GetDC(); pDC->TextOutA(20,20,"DDDD"); } この様にビュー上の関数を呼び出すと、 エラー 1 error C2352: 'CXXXView::PicByouga1' : 静的でないメンバ関数の呼び出しが正しくありません と、出ます。 もう少しで、解決するような気がします。 どうすればよいでしょうか?

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

pStaticがNULLになっているとか。

関連するQ&A