OnDraw 関数のなかで裏画面をつかってBitBlt() で表画面にコピーしたいのですが、
なぜだか、なにもでてきません。
どうしてでしょうか?
どなたか、教えてください。
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
CDC MemDC ;
LONG lMemHeight, lMemWidth;
CRect rect;
CPen pen (PS_SOLID,5,RGB(0,0,9));
GetClientRect(&rect);
lMemHeight = rect.Height() ;
lMemWidth = rect.Width();
MemDC.CreateCompatibleDC(pDC) ;
MemDC.FillRect(rect, &CBrush(RGB(0xa0, 0xa0, 0xa0)));
pDC->BitBlt(0, 0, lMemWidth, lMemHeight, &MemDC, 0, 0, SRCCOPY);
}
MFCで試したこと無いので、的外れかもしれませんが…。
CreateCompatibleBitmapなどで、ビットマップを作成し、それをHDCにSelectObjectで関
連付けした上で描画。
その後、表のHDCへBitBltしないといけないのではないでしょうか?
# MFCだとCBitmapでも使うのかな?
できた♪
NowNowさんありがとうございます。
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
CDC MemDC ;
LONG lMemHeight, lMemWidth; //新しく宣言した変数(2つ)
CRect rect;
CBitmap* pMemBmp, MemBitmap;
GetClientRect(&rect);
lMemHeight = rect.Height() ;
lMemWidth = rect.Width();
MemDC.CreateCompatibleDC(pDC) ;
//新しく挿入した行(2行)
MemBitmap.CreateCompatibleBitmap(pDC, lMemWidth, lMemHeight);
pMemBmp = MemDC.SelectObject(&MemBitmap);
MemDC.FillRect(rect, &CBrush(RGB(0xa0, 0xa0, 0xa0)));
pDC->BitBlt(0, 0, lMemWidth, lMemHeight, &MemDC, 0, 0, SRCCOPY);
}