今日小弟搞了一个小程序(基于对话框的)练手
但是我放不上bmp位图呀?
我是这样做的:
CBitmap bmp ;
bmp.LoadBItmap(IDB_MAP1) ;
但是接下来我就不知道了
还请各位前辈指点!
谢谢!!

解决方案 »

  1.   


    CBitmap* pOldBmp=pDC->SelectObject( &bmp );
    pDC->BitBlt(...);
    pDC->SelectObject( pOldBmp );
      

  2.   

    如果想在OnPaint()中画bmp,参考代码如下(其中,lpszBmpFile,x,y,nWdith,nHeight等都是具体参数,看程序就明白了): CPaintDC dc(this);
    CDC memDC;

    memDC.CreateCompatibleDC( &dc );
    CBitmap * bitmap = new CBitmap(); HBITMAP hBitmap = NULL; 
    hBitmap = (HBITMAP)LoadImage(NULL, lpszBmpFile, IMAGE_BITMAP, 0, 0, 
    LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); 
    bitmap->Attach(hBitmap);  CBitmap * pOldBitmap = (CBitmap *) memDC.SelectObject( bitmap );
    if (pOldBitmap == NULL) // if bitmap is very big, better check this !
    {
    memDC.DeleteDC();
    delete bitmap;
    return;
    }
    dc.BitBlt(x, y, nWidth, nHeight, &memDC, 0, 0, SRCCOPY);
    memDC.SelectObject(pOldBitmap);
    delete bitmap;
    memDC.DeleteDC();
      

  3.   

    如果想在OnPaint()中画bmp,参考代码如下(其中,lpszBmpFile,x,y,nWdith,nHeight等都是具体参数,看程序就明白了): CPaintDC dc(this);
    CDC memDC;

    memDC.CreateCompatibleDC( &dc );
    CBitmap * bitmap = new CBitmap(); HBITMAP hBitmap = NULL; 
    hBitmap = (HBITMAP)LoadImage(NULL, lpszBmpFile, IMAGE_BITMAP, 0, 0, 
    LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); 
    bitmap->Attach(hBitmap);  CBitmap * pOldBitmap = (CBitmap *) memDC.SelectObject( bitmap );
    if (pOldBitmap == NULL) // if bitmap is very big, better check this !
    {
    memDC.DeleteDC();
    delete bitmap;
    return;
    }
    dc.BitBlt(x, y, nWidth, nHeight, &memDC, 0, 0, SRCCOPY);
    memDC.SelectObject(pOldBitmap);
    delete bitmap;
    memDC.DeleteDC();
      

  4.   

    上述代码直接从一个bmp文件读取bmp后画。对于资源中的bmp,代码简单一些:
    CPaintDC dc(this);
    CDC memDC;

    memDC.CreateCompatibleDC( &dc );
    CBitmap bmp;
    bmp.LoadBitmap(IDB_YOURBMP); BITMAP bm;
    bmp.GetBitmap(&bm);
    CBitmap * pOldBitmap = (CBitmap *) memDC.SelectObject(&bmp);
    dc.BitBlt(x, y, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY);
    memDC.SelectObject(pOldBitmap);
    bmp.DeleteObject();
    memDC.DeleteDC();