お世話になります。
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);
}
補足です。
上のメンバ変数は
void* m_pvBits;
HBITMAP m_hbBitmap;
BITMAPINFO bmi;
です。
宜しくお願い致します。
質問の仕方を変えます。
再描画するCXXXView::OnDraw()が呼び出されるとき、
白く再描画されるのを取り除くにはどうすればよいですか?
例えば、IEのウインドウサイズをマウスで変えても、
クライアント領域はちらつきませんよね。
どうすればこのようにできるのでしょうか?
WM_ERASEBKGRNDを調べてみましょう。
解決しました。どうもありがとうございます。
ツイート | ![]() |