我认为是LoadBitmap的原因,是否在给bmp文件的路径时应该用双斜线,"f:\\toolboc\\....,因为单斜线不能找到bmp文件。

解决方案 »

  1.   

    1,可能不是GetWindowDC,而是GetDC
    2,没看见你调用BitBlt或StretchBlt函数
      

  2.   


    1.MyBitmap->LoadBitmap("f:\toolboc\runtime\splash.bmp");
    LoadBitmap不能直接指定文件名,必须首先在资源管理器中加入要显示的位图、分配ID号(如IDB_BITMAP),这样才能够供LoadBitmap使用:
    MyBitmap->LoadBitmap(IDB_BITMAP);2.MyBitmap=pDC->SelectObject(MyBitmap);
    这样选入不能直接显示位图,必须调用BitBlt或StretchBlt函数。3.所有显示东西的代码最好放到OnDraw函数,因为当改变窗口尺寸或其他原因需要刷新时,不是在OnDraw/OnPaint显示的东西会被刷掉。显示位图的代码可以如下:
    CDC* pDC=GetWindowDC();//在OnDraw此行可省略
    CDC* pDisplayMemDC=new CDC;
    CBitmap* pBitmap=new CBitmap;
    pBitmap->LoadBitmap(IDB_BITMAP);
    pDisplayMemDC->CreateCompatibleDC(pDC);
    pDisplayMemDC->SelectObject(pBitmap);
    pDC->SelectObject(pBitmap);
    pDC->StretchBlt (0,0,100,100,pDisplayMemDC,
    0,0,100,100,SRCCOPY);
    delete pDisplayMemDC;
    delete pBitmap;
      

  3.   

    错误之处
    1。文件名路径错误
    2.对屏幕,窗口的dc调用selectobject选不进image的
    只有做一个内存dc,把图片选进去,然后bitblt到屏幕
    如下
    bBitmap.LoadBitmap(IDB_BITMAP1);
    bdc.CreateCompatibleDC (NULL);
    bakHBitmap =(HBITMAP) bdc.SelectObject(&bBitmap)->m_hObject ; dc.BitBlt(0,0,1024,768,&bdc,0,0,SRCCOPY); bdc.SelectObject(CBitmap::FromHandle(bakHBitmap));