大家好,  在开发板上调试程序,LoadImage返回值一直是NULL,快崩溃了,程序如下: HBITMAP  h_bgBmp = (HBITMAP)::LoadImage(::AfxGetInstanceHandle(), L"1.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
if(h_bgBmp == NULL)
{
  MessageBox(L"加载位图失败");
  return ;
}
  本来怀疑是位图文件问题,但是按照网上说的,把bmp文件用画图工具打开再保存,问题仍存在。另:相同环境的其他测试都可以通过:
  1.显示位图,测试通过
h_bgBmp = (HBITMAP)::LoadImage(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
...//(显示位图)  2.文件读取,测试通过
HANDLE hFile = CreateFile(L"1.txt", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
...//(文件读取)  这是怎么回事?谢谢

解决方案 »

  1.   

    是不是路径的问题,你指定1.bmp的绝对路径试试
      

  2.   


    试过,不可以,路径是L"\\1.bmp"而CreateFile用L"\\1.txt"就可以
      

  3.   

    你用完整的路径啊
    然后GetLastError捕捉一下错误
      

  4.   

    改用绝对路径试试
    GetLastError();看看返回值是什么?
      

  5.   


    板子上,这就是完整路径了,\是根目录GetLastError=87,参数不正确?
      

  6.   

    不好意思,我弄错了,GetLastError=1814,找不到资源
    难道路径是LPCSTR 而不是LPCWSTR?
      

  7.   

    晕死啊,没有盘符吗:
    “C://XXX//……//1.bmp”
    把你查看那个bmp的窗口的地址拷过来,将/改成//
      

  8.   


    我在wince下,根目录就是\
      

  9.   

    没做过wince,那你就把它加到资源中啊,直接用资源的ID来加载
      

  10.   


    和需求不符
    UNICODE,改成多字符集编不过,我重建项目试试
      

  11.   

    部长说的是,看GetLastError
    既然看到是资源找不到了。用"1.bmp"可以么?
      

  12.   


    GetLastError返回值=1814
    一开始用的就是"1.bmp"
      

  13.   

    HBITMAP h_bgBmp = (HBITMAP)::LoadImage(::AfxGetInstanceHandle(), L"1.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
    ===========================
    既然是BMP文件,那么最后的参数肯定要含有LR_LOADFROMFILE才行啊。
      

  14.   

    问题解决了,使用Windows CE特有的SHLoadDIBitmap函数来完成。估计原因是,Windows XP与Windows CE的机制不同,对于一些API调用会造成一些差异,比如WinCE下的LoadImage不支持LR_LOADFROMFILE标志。谢谢大家了,特别是兔子党的朋友们!