本帖最后由 xianglitian 于 2012-04-18 09:52:41 编辑

解决方案 »

  1.   

    WinSunProc中很多参数没有声明就引用了,当然了既然没有编译错误,估计是你漏写了
    hdcmem  hdc……
      

  2.   

    调试一下
    hBm=LoadBitmap(hInstance,"forest");      //加载位图
    看看这里是否能够成功加载
    是不是应该带上扩展名
      

  3.   

    hBm=LoadBitmap(hInstance,"forest");  
    用绝对路径加上全文件名试试
      

  4.   

    LoadBitmap(hInstance,"forest"); 应该是这里错了,看看返回值是什么
      

  5.   

      百科上这样说的:“返回值:如果函数执行成功,则返回值是指向指定位图的句柄。如果函数执行失败,那么返回值是NULL。”具体怎么写呢???
      

  6.   

    if(hBm==NULL)
    {
       AfxMessageBox("error");
    }
      

  7.   

      HANDLE hHand = ::LoadImage((HINSTANCE)GetSafeHwnd(), "forest.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);
        hBm = (HBITMAP)hHand;
    GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);//获取位图尺寸或者这么写试试
      

  8.   

      case WM_CREATE:
            hdc=GetDC(hwnd);                        //获取设备环境
             hdcmem=CreateCompatibleDC(hdc);            //获取内存设备环境    
             ReleaseDC(hwnd,hdc);                    //释放设备环境
    感觉是这点错了,你创建窗口的时候创建DC,然后紧接着释放了。然后绘制的时候又在使用这个hdc绘制。 
     BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);把你在case WM_CREATE的语句放到WM_PAINT开始
    hdc=GetDC(hwnd);                        //获取设备环境
    hdcmem=CreateCompatibleDC(hdc);            //获取内存设备环境  绘制完之后再ReleaseDC(hwnd,hdc); 试一下。不知道对不对?
      

  9.   

    确实是加载失败,反加值为NULL,怎么解决呢?
      

  10.   

    用的是API,初学者  不会用MFC
      

  11.   

    (HINSTANCE)GetSafeHwnd()换成hInstance
      

  12.   


    不好意思我看错了,没有看见hdc=BeginPaint(hwnd,&ps)这一句。这点应该是没有错误的
      

  13.   


    以下我按照你说的修改的还是不可以!!!!:
    HANDLE hHand = ::LoadImage(hInstance, "IDB_BITMAP1", IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);
    hBm = (HBITMAP)hHand; //hBm=LoadBitmap(hInstance,"IDB_BITMAP1"); //加载位图
    if(hBm==NULL)
    {
    MessageBox(hwnd,"位图加载失败","错误",MB_OK);
    }
    GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);//获取位图尺寸
      

  14.   

    HANDLE hHand = ::LoadImage(hInstance, "forest.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);
      

  15.   

    http://img.my.csdn.net/uploads/201204/18/1334737604_6781.png
      

  16.   

    我是通过右击资源文件,引入的,图片默认放在了工程文件夹下。上面图片地址,文件名:forest.bmp
      

  17.   

    如果不在资源中,在文件中要加
    LR_LOADFROMFILE
      

  18.   

    这是资源文件  部分内容
    /////////////////////////////////////////////////////////////////////////////
    //
    // Bitmap
    //forest                  BITMAP  DISCARDABLE     "forest.bmp"
    IDB_BITMAP5             BITMAP  DISCARDABLE     "bitmap5.bmp"
    #endif    // Chinese (中国) resources
    /////////////////////////////////////////////////////////////////////////////
      

  19.   

    HBITMAP hBitmap=(HBITMAP)LoadImage(0,"res\\thinning.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
      

  20.   

    HBITMAP hbmp=(HBITMAP)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,0);
      

  21.   

    我添加资源试了一下
    你的代码没有问题
    应该是你资源的问题
    我这面脚本是这样的
    /////////////////////////////////////////////////////////////////////////////
    //
    // Bitmap
    //forest                  BITMAP                  "test.bmp"