裏画面をつかった描画

[戻る]
ガラ 2005/03/31(木) 09:15:24
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);

}

NowNow 2005/03/31(木) 09:49:00
MFCで試したこと無いので、的外れかもしれませんが…。

CreateCompatibleBitmapなどで、ビットマップを作成し、それをHDCにSelectObjectで関
連付けした上で描画。
その後、表のHDCへBitBltしないといけないのではないでしょうか?

# MFCだとCBitmapでも使うのかな?

ガラ 2005/03/31(木) 10:47:13
[[解決]]
できた♪
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);

}

古いスレッドには追加発言できません。