大家好,我需要做这样一件事,就是将客户端的一个图片加载成为CBitmap类或者HBITMAP,现在我需要用一个char []数组将所有数据保存起来,然后在通过套接字发送到服务器端,在服务器端又将这个char []转换成 CBitmap 类或者HBITMAP。
  请问,这怎么转换呢?就是将CBitmap/HBITMAP保存到一个char []中呢?
  谢谢大家!

解决方案 »

  1.   

    HANDLE hImgFile = ::CreateFile(szImgFile,GENERIC_READ,0,NULL,OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,0);
    DWORD dwFileLength = ::GetFileSize(hImgFile ,NULL);//文件长度
      CHAR *pszFileBuffer = NULL;
    pszFileBuffer = new CHAR[dwFileLength]; //读入源文件
    DWORD dwRead=0;
    ReadFile(hImgFile ,pszFileBuffer,dwFileLength,&dwRead,NULL)
      

  2.   

    回复1楼的,这个图片不是来自文件夹,否则我会自己读取的。现在这个图片保存在CBitmap/HBITMAP中,其实图片是对屏幕的截图,不是来自文件夹里面的
      

  3.   

    bool CProjectionDlg::GetImagePathData( char * &p , long &lImageLong )//获取文件的数据
    {
    CFile file;  //定义文件对象 if( !file.Open( m_szImagePath, CFile::modeRead ) ) //以只读方式打开文件
    {
    MessageBox( _T("无法打开BMP文件,保存失败!"), _T("提示"), MB_OK  | MB_OK | MB_ICONERROR );
    return false;
    } DWORD filelen;  //用于保存文件长度 filelen = (DWORD)file.GetLength();  //读取文件长度 p = new char[filelen + 1]; //根据文件长度分配数组空间 if(!p )  //如果不空间不足则返回
    {
    file.Close(); MessageBox( _T("无法分配足够的内存空间,保存失败!"), _T("提示"), MB_OK  | MB_OK | MB_ICONERROR ); return false;
    } if( file.Read( p, filelen ) != filelen )  //读取BMP文件到m_pBuffer中
    {
    delete p; file.Close(); MessageBox( _T("读取文件时出现错误,保存失败!"), _T("提示"), MB_OK  | MB_OK | MB_ICONERROR ); return false;
    } file.Close(); lImageLong = filelen; return true;
    }void CProjectionDlg::ImageDataToHBITMAP( char* &pData, HBITMAP *m_pHbitmap )//数据库的数据转为HBITMAP
    {
    LPSTR hDIB; LPVOID lpDIBBits; BITMAPFILEHEADER bmfHeader; DWORD bmfHeaderLen; bmfHeaderLen = sizeof( bmfHeader); strncpy_s( (LPSTR)&bmfHeader, bmfHeaderLen, (LPSTR)pData, bmfHeaderLen ); hDIB = pData + bmfHeaderLen; BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB; BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB; lpDIBBits = pData + ((BITMAPFILEHEADER *)pData)->bfOffBits; CClientDC dc(this); *m_pHbitmap = CreateDIBitmap( dc.m_hDC, &bmiHeader, CBM_INIT, lpDIBBits, &bmInfo, DIB_RGB_COLORS ); delete pData;
    }以前做的一个项目代码,献给LZ啦,你试下行不。以前我是看这个http://www.360doc.com/content/11/0113/16/4780948_86256633.shtml学会的.