秘密基地、どこに作った?

すみません、解決しませんでした・・・

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で、複数のウィンドウのうちで
アクティブになった ものだけを
操作したいのです。

ピクチャーコントロールの上に描画するためには
どうすればよいでしょう?

よろしくお願いします。

A 回答 (4件)

void CMainFrame::OnButton()


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

ありがとうございました。

ビューに記入すれば良かったのですね

おっしゃるとおり、操作できました。

ありがとう!

お礼日時:2008/06/06 10:45

うまく行かない原因を探索しましょう



MFCのアサーションが出るのですか?
現状 動作させた場合何が起きるのでしょう

> mc=MDIGetActive();
にブレークポイント設定してステップ実行してみましょう

> CStatic* pStatic=(CStatic*)mc->GetDlgItem(IDC_PICTURE1);
が失敗した場合 pStaticは NULLになります

失敗する場合は アクティブな子ウィンドに IDC_PICTURE1というIDの子コントロールが存在しない場合です
    • good
    • 0

#1です。


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

この回答への補足

はい、CFormViewです

ダイアログバーの上のボタンをクリックして、
ビュー上のピクチャーコントロールに 描画したいのです。


void CMainFrame::OnButton()
{
CXXXView::PicByouga1();
}

ボタンをクリックして、

void CXXXView::PicByouga1(void)
{
CDC* pDC=picture1.GetDC();
pDC->TextOutA(20,20,"DDDD");
}

この様にビュー上の関数を呼び出すと、

エラー1error C2352: 'CXXXView::PicByouga1' : 静的でないメンバ関数の呼び出しが正しくありません

と、出ます。

もう少しで、解決するような気がします。

どうすればよいでしょうか?

補足日時:2008/06/06 09:19
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報