大家请看以下代码: TCHAR szFile[10];
 swprintf_s(szFile, _T("b%d.bmp"), 1);
_tfopen_s(&stream, szFile, _T("r"))这样执行时正确的,并没有错误,但我想这样实现_tfopen_s(&stream, MAKEINTRESOURCE(IDB_BITMAP1), _T("r"));//跳出异常以下是异常处的代码:
if(*file==_T('\0'))
        {
            errno=EINVAL;
            return NULL;
        }也就是说我传递给_tfopen_s的第二个参数有问题,LPTSTR是MAKEINTRESOURCE()的返回类型,大家可以讨论下给点意见吗?怎样处理更好!

解决方案 »

  1.   

    你的资源string里 有IDB_BITMAP1这个定义? string一般都是IDS_XXXX吧,可以肯定MAKEINTRESOURCE(IDB_BITMAP1)返回NULL啦!这个你应该传存在的字符串资源ID,而不是位图资源ID!
      

  2.   

    你这里要打开文件,怎么会用到MAKEINTRESOURCE呢???不解
      

  3.   

    MAKEINTRESOURCE 的返回值只能用在显式的定义了可以接受MAKEINTRESOURCE作为参数的函数,其他的函数都不能用这个返回值,资源管理的一些函数都可以用MAKEINTRESOURCE的返回值,其他函数一般是不可以的。
      

  4.   


    现在知道,基本上我这种实现方法是错的了,读取资源管理器的资源,一般用FindResource,大哥还有其他可用的方法吗?请告之!
      

  5.   

    说的很正确, 如果楼主的文件名能固定,放在资源string里, 用CString好了:
    CString strFileName;
    strFileName.LoadString(IDS_XXXX);
      

  6.   


    我想访问的并不是资源管理器里的string资源,而是图片资源,所以现在不知道应该怎样读取,我不想拷贝.exe文件到别处的时候同时也把.bmp也一起拷贝!也就是说把.bmp也封装到.exe里
      

  7.   

    晕,说半天了还是这个意思,那你是想用这个bmp绘制图呀,还是想打开它然后保存到别的地方去呢?说白了,你加载bmp用来干什么的?
      

  8.   


    加载bmp进来读取它的数据,读取文件头,信息头,以及他的图像数据,应该可以算是绘图。
      

  9.   

    那用CBitmap bmp, bmp.LoadBitmap(IDB_BITMAP1);利用这个实例化bmp对象,想干啥你就干啥吧!