vc中读取图片内容总是不对,高手帮小弟我看一看,多谢

vc中读取图片内容总是不对,高手帮我看一看,谢谢!
点一个加载附件的按钮,然后选取所需图片:
void   CForwardReq::AddAdjunct()   //添加附件
{      
        unsigned   int   filelen;   //附件的大小
        char   pMMbody[1024*1024];   附件的内容体
       
        static   char   BASED_CODE   szFilter[]   =   "Media   Files   (*.jpg)|*.jpg|Media   Files   (*.bmp)|*.bmp|Media   Files   (*.gif)|*.gif|Media   Files   (*.mid)|*.mid|Media   Files   (*.wav)|*.wav|Media   Files   (*.*)|*.*| ";
CFileDialog dlg(TRUE,   "*.* ",   NULL,   OFN_HIDEREADONLY   |   OFN_OVERWRITEPROMPT   |   OFN_ALLOWMULTISELECT,szFilter);
        if(dlg.DoModal()   ==   IDOK)
        {
               
                POSITION     pos;
                pos   =   dlg.GetStartPosition();
CString   filename;

                while(pos)
{
//pBuff   =   pReservBuff;
if(!(filename   =   dlg.GetNextPathName(pos)))
break;
CFile   file;

if(!file.Open(filename,CFile::modeRead|CFile::typeBinary,NULL))
{
AfxMessageBox( "文件操作出错! ");
return;
}

filelen   =   file.GetLength();
if(filelen   >   MMBODY_MAX_LEN){
AfxMessageBox( "附件过大 ");
return;
}
file.Read(pMMbody,filelen);//读入所添加的附件内容
int   aaa   =   lstrlen(pMMbody);  
                                                        file.Close();
                }
        }
}
------------------------------------------
该程序读文本的时候没问题,int   aaa   =   lstrlen(pMMbody);   aaa的大小与文本的大小一致。   但附件为图片的时候就不对了,aaa的值为4,图片实际大小为96k了,这是为什么??

------解决方案--------------------
lstrlen~?????来对图片取大小~???有这么个做法的吗~???好好看看图片的格式吧``

还有楼上的,error C2018: unknown character '0xb8 ' "
是你拷来的有中有一个字符是不对的,那一行你看看哪里有字符是错的,不是英文的输入输入的也会这样的````
------解决方案--------------------
了解下二进制文件与文本文件! 图片的读取是二进制的
------解决方案--------------------
lstrlen(pMMbody);
这个计算的是pMMbody中到第一个字符为0x0的长度.也就是只能取文本文件的长度.

直接
int aaa = filelen; 就可以了
------解决方案--------------------
首先你这个缓冲区固定大小了,如果超出就会造成缓冲区溢出。最好用指针动态分配。
其次获取读取读取的数据大小可以:
int aaa = file.Read(pMMbody,filelen);//读入所添加的附件内容
aaa中就是实际读取的字节数。