• 締切済み

再描画されない

お世話になります。WS_POPUPで作成したウィンドウにGDI+を用いて画像を表示させています。 そのウィンドウに、他のウィンドウ(最大化されていない)を重ねて動かすと、重なっていた部分が再描画されず真っ白になってしまいます。 最大化されたウィンドで隠した場合は正常に表示されます。 VC+2005です。よろしくお願いします。m(__)m //ウィンドウプロシージャWM_PAINT内 hdc = BeginPaint(hWnd, &ps); Image myImage(fn); MoveWindow(hWnd, 0, 0, myImage.GetWidth(), myImage.GetHeight(), 0); Graphics MyGraphics(hdc); MyGraphics.DrawImage(&myImage, 0, 0, myImage.GetWidth(), myImage.GetHeight()); EndPaint(hWnd, &ps);

みんなの回答

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

おかしいですね? 当方の環境では ちゃんと再描画イベントを認識しますよ VS2005 + WinXP SP2 VC++2005で Win32プロジェクトを作成し InitInstanceの中のCreateWindowの引数 WS_OVERLAPPEDWINDOWをWS_POPUPに変更 表示位置や幅・高さを適当に(0, 0, 320, 240)に設定 GDIPulusの初期化・終了手順を追加 GdiplusStartupInputやToken変数の追加 GdiplusStartup関数やGdiplusShutdown関数の追加 WndProcのWM_PAINTを   hdc = BeginPaint(hWnd, &ps);   OnPaint( hWnd, hdc );   EndPaint(hWnd, &ps); に変更 void OnPaint(HWND,HDC)を追加 void OnPaint(HWND hWnd, HDC hdc) {   Image myImage( szFn );   MoveWindow( hWnd, 0, 0, myImage.GetWidth(), myImage.GetHeight(), FALSE );   Graphics g( hdc );   g.DrawImage( &myImage, 0, 0, myImage.GetWidth(), myImage.GetHeight() ); } プロジェクトのプロパティのリンクの追加の依存ファイルに『gdiplus.lib』を追加 stdafx.hに #include <unknwn.h> #include <gdiplus.h> using namespace Gdiplus; を追加 といった具合で確認しました …

masaota56
質問者

お礼

すみません、やっていただいた方法を確認しようと思いましたが、上手くコンパイルできませんでした。 色々試している内に、バックバッファに入れて転送する方法で上手くいきましたので、それで行こうと思います。 どうもありがとうございました。m(__)m

関連するQ&A