0

MFC ダイアログで背景画像を設定しようとしています。 、 、 のような関数内に 、 または を書き込んでいるときに、クライアント デバイス コンテキストの取得に成功しましたが、新しく宣言CDC* pDC=GetDC()された関数 (クラス内) では成功しませんでした。CClientDC dc(this)OnTimerOnPaintOnEraseBkgrdCDialog

どちらの場合も長方形を描くような単純な描画関数でこれをテストしました。その結果、 , , で書くとOnTimerうまくOnPaintいきOnEraseBkgrdますが、宣言された新しい関数ではうまくいきません!

非メッセージ関数でクライアント DC を取得する方法を教えてもらえますか?

4

2 に答える 2

0

Your drawing to screen should only be done in OnPaint (or OnEraseBkgrd). If you need to prompt drawing from elsewhere in your dialog then you need to call InvalidateRect() which will subsequently call OnPaint(). When you OnPaint() is called, you can call pDC->GetClipBox() to get the rect which needs updating.

I think the best way to do what you want to do would be to store a pointer to the background image in your dialog class, then when you want to change the background image, set the bitmap pointer and call InvalidateRect(). Your OnPaint() function will then do the BitBlt to actually draw the new bitmap.

于 2012-06-11T08:42:18.537 に答える