void CSecandView::OnDraw(CDC* pDC)
{
CSecandDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CDC dc;
CDC* pDrawDC = pDC;
CBitmap bitmap;
CBitmap* pOldBitmap;
CRect client;
pDC->GetClipBox(client);
CRect rect = client;
DocToClient(rect);
if (!pDC->IsPrinting())
{
if (dc.CreateCompatibleDC(pDC))
{
if (bitmap.CreateCompatibleBitmap(pDC, rect.Width
(), rect.Height()))
{
OnPrepareDC(&dc, NULL);
pDrawDC = &dc;
dc.OffsetViewportOrg(-rect.left, -
rect.top);
pOldBitmap = dc.SelectObject(&bitmap);
dc.SetBrushOrg(rect.left % 8, rect.top %
8);
dc.IntersectClipRect(client);
}
}
}
CBrush brush;
if (!brush.CreateSolidBrush(RGB(100,120,120)))
return;
brush.UnrealizeObject();
pDrawDC->FillRect(client, &brush);
pDrawDC->SetMapMode(MM_ISOTROPIC);
if (pDrawDC != pDC)
{
pDC->SetViewportOrg(0, 0);
pDC->SetWindowOrg(0,0);
pDC->SetMapMode(MM_TEXT);
dc.SetViewportOrg(0,0);
dc.SetWindowOrg(0,0);
dc.SetMapMode(MM_TEXT);
pDC->BitBlt(-rect.left, -rect.top, rect.Width(), rect.Height
(),
&dc, 0, 0, SRCCOPY);
dc.SelectObject(pOldBitmap);
}
}このように記述したのですが、ちらつきが、直りません宜しく御願いします。
プログラミングの初心者です。たぶん高橋さんよりも技量が劣っていると思います。間違ってい
ると思ったら、読み飛ばしてください。
まず、CBitmap bitmap; をグローバル領域で、宣言してください。
そして、もう一つ宣言してください。(bitmapBGとか)
CBitmap* pOldBitmap; は、いりません。
コンストラクタに、
CClientDC dc(0);
bitmap.CreateCompatibleBitmap(&dc,/*描画する横幅(BG)*/,/*描画する縦幅(BG)*/);
と書いてください。
CDC dc; に、もう一つ宣言を追加してください。(dcBGとか)
dc.CreateCompatibleDC(pDC); の次に dcBG.CreateCompatibleDC(pDC);と書いてくださ
い。
dc.SelectObject(&bitmap); の次に、
dcBG.SelectObject(&bitmapBG); と、書いてください。
そして、dcBG.BitBlt(/*描画する左端の座標(BG)*/,/*描画する上端の座標(BG)*/,/*描画す
る横幅(BG)*/,/*描画する縦幅(BG)*/,&dc,/*描画する物の横幅*/,/*描画する物の縦幅
*/,SRCCOPY)
と、書いてください。
その後、
pDC->BitBlt(/*描画する左端の座標*/,/*描画する上端の座標*/,/*描画する横幅*/,/*描画す
る縦幅*/,&dcBG,/*描画する物の横幅(BG)*/,/*描画する物の縦幅(BG)*/,SRCCOPY);
最後に、dc.DeleteDC(); dcBG.DeleteDCと、書いてください。
そうすれば、できるかもしれません。ちなみに、/*・・・*/と書かれているところは、CRectで
宣言したものを、書かないでください。
OnEraseBkgnd()で何もしないようにしていますか?
dairygoodsさん、OnEraseBkgnd()は、このソースだと、どの部分に書けばよいことになるので
すか?
> OnEraseBkgnd()は、このソースだと、どの部分に書けばよいことになるのですか?
ClassWizard などで WM_ERASEBKGND のハンドラを作成するんじゃないかと。
以下のホームページに詳細のコーディングが書いてありました。
情報を頂いた皆さん有り難うございました。
http://www.geocities.jp/chiakifujimon/makesoft2/proc3.html