画面のちらつきを抑えるには?

解決


ととろねこ  2005-06-17 22:36:22  No: 57962

お世話になります。
VC++6.0 AppWizardにてSDIでOnDraw()の部分を以下のようにしたのですが、
ウインドウサイズを変えるとちらついてしまいます。
この再描画するちらつきをなくすにはどうすればよいでしょうか?

void CDIBtestView::OnDraw(CDC* pDC)
{
  CDIBtestDoc* pDoc = GetDocument();
  ASSERT_VALID(pDoc);
  
  m_hbBitmap = CreateDIBSection(*pDC, &bmi, DIB_RGB_COLORS, &m_pvBits, 0, 0 ); 
  CDC MDC;
  MDC.CreateCompatibleDC(pDC);
  
  CBitmap *pBmp;
  pBmp = MDC.SelectObject(CBitmap::FromHandle(m_hbBitmap));

  int x, y;
  int lineSize;
  lineSize = 640 * 3; 
  
  for (x = 0; x < 600; x++)
  {
    for (y = 0; y < 480; y++)
    {
      ((char*)m_pvBits)[x * 3 + lineSize * y    ] = 256 * (x / 640.0);
      ((char*)m_pvBits)[x * 3 + lineSize * y + 1] = 256 * (y / 480.0);
      ((char*)m_pvBits)[x * 3 + lineSize * y + 2] = 255;
    }
  }
  pDC->BitBlt(0, 0, 600, 600, &MDC, 0, 0, SRCCOPY);
  MDC.SelectObject(pBmp);
  
}


ととろねこ  2005-06-17 22:48:38  No: 57963

補足です。
上のメンバ変数は

void* m_pvBits;
HBITMAP m_hbBitmap;
BITMAPINFO bmi;

です。
宜しくお願い致します。


ととろねこ  2005-06-18 01:05:21  No: 57964

質問の仕方を変えます。
再描画するCXXXView::OnDraw()が呼び出されるとき、
白く再描画されるのを取り除くにはどうすればよいですか?

例えば、IEのウインドウサイズをマウスで変えても、
クライアント領域はちらつきませんよね。
どうすればこのようにできるのでしょうか?


fackt  2005-06-18 01:16:59  No: 57965

WM_ERASEBKGRNDを調べてみましょう。


ととろねこ  2005-06-18 11:01:16  No: 57966

解決しました。どうもありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加