我用CreateCompatibleDC创建了一个dc的内存,我想让它区域(0, 0, 640, 480)填充RGB(255, 0, 255), 该如何做?这块DC得内存,并不是马上用来显示,而是要做一些其他运算。
我写了个测试程序。如下
HDC hMemDc, hPaintDc;
        HBRUSH  hBrush; hPaintDc = ::GetDC(m_hWnd);
if(hPaintDc == NULL)
return; hMemDc = ::CreateCompatibleDC(NULL);
if(hPaintDc == NULL)
return; hBrush = ::CreateSolidBrush(TRANSPARENTCOLOR);
if(hBrush == NULL)
return;

FillRect(hMemDc, &m_rectDlg, hBrush);

::BitBlt(hPaintDc, 0, 0, m_rectDlg.right, m_rectDlg.bottom,     hMemDc, 0, 0, SRCCOPY); ::DeleteDC(hPaintDc);
::DeleteDC(hMemDc);
::DeleteObject(hBrush);但是,不没有在对话框上出现想要的粉红色

解决方案 »

  1.   

    没有初始化hMemDc的大小!
      

  2.   

    如何初始化hMemDc的大小啊。
    该用那个api函数
      

  3.   

    hMemDc中初始的bitmap是1个像素宽、一个像素高的单色位图,要想画出彩色来,需创建一个和显示DC(非内存DC)兼容的bitmap,并将bitmap选进memdc如
    HDC hMemDc, hPaintDc;
            HBRUSH  hBrush; hPaintDc = ::GetDC(m_hWnd);
    if(hPaintDc == NULL)
    return; hMemDc = ::CreateCompatibleDC(hPaintDc);
    if(hMemDc == NULL)
    return; hBrush = ::CreateSolidBrush(TRANSPARENTCOLOR);
    if(hBrush == NULL)
    return;

        HBITMAP hBitmap = CreateCompatibleBitmap(hPaintDc);
        HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDc, hBitmap); FillRect(hMemDc, &m_rectDlg, hBrush);

    ::BitBlt(hPaintDc, 0, 0, m_rectDlg.right, m_rectDlg.bottom,     hMemDc, 0, 0, SRCCOPY);        SelectObject(hMemDc, hOldBitmap);
            DeleteObject(hBitmap);
    ::DeleteDC(hPaintDc);
    ::DeleteDC(hMemDc);
    ::DeleteObject(hBrush);
      

  4.   

    如果,我在使用一个成员变量 m_hBmp, 在OnInitDialog加载一副bmp,在OnDestroy()中, 调用DeleteObject(m_hBmp), 会不会造成内存泄漏,或象处理DC类似, 通过SaveDC保存