- ベストアンサー
ピクチャーコントロールのデバイスコンテキストを取得するためには?
すみません、解決しませんでした・・・ 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で、複数のウィンドウのうちで アクティブになった ものだけを 操作したいのです。 ピクチャーコントロールの上に描画するためには どうすればよいでしょう? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
void CMainFrame::OnButton() { CXXXView::PicByouga1(); } 違う違う。 そうじゃなくて、メッセージマップのほうでViewにむすびつけます。 void CXXXXView::OnButton1() { : : } VC++6だと、クラスウィザードで、クラス名のところでCXXXViewを選んでやればよいはず。
その他の回答 (3)
- redfox63
- ベストアンサー率71% (1325/1856)
うまく行かない原因を探索しましょう MFCのアサーションが出るのですか? 現状 動作させた場合何が起きるのでしょう > mc=MDIGetActive(); にブレークポイント設定してステップ実行してみましょう > CStatic* pStatic=(CStatic*)mc->GetDlgItem(IDC_PICTURE1); が失敗した場合 pStaticは NULLになります 失敗する場合は アクティブな子ウィンドに IDC_PICTURE1というIDの子コントロールが存在しない場合です
- titokani
- ベストアンサー率19% (341/1726)
#1です。 というか、CFormViewですよね。多分。 なら、OnButton()ハンドラをMainFrameじゃなくて、Viewに結びつけるのが一番楽。
補足
はい、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)
pStaticがNULLになっているとか。
お礼
ありがとうございました。 ビューに記入すれば良かったのですね おっしゃるとおり、操作できました。 ありがとう!