HRGN的保留,与恢复,能保存成功,恢复出错

HRGN的保存,与恢复,能保存成功,恢复出错。
C/C++ code

void ZBitmap::SaveRgn(std::string _strName)
{
    UINT dwSize=GetRegionData(m_hrgn,0,NULL);
    BYTE* pData=new BYTE[dwSize];
    GetRegionData(m_hrgn,dwSize,(LPRGNDATA)pData);
    std::string strName=_strName+".rgn";
    std::ofstream outfile(strName.c_str());
    outfile.write((char*)&dwSize,sizeof(UINT));
    outfile.write((char*)pData,dwSize);
    delete pData;
    outfile.close();
}
void ZBitmap::LoadRgn(std::string _strName)
{
    std::ifstream infile(_strName.c_str());
    UINT dwSize;
    infile.read((char*)&dwSize,sizeof(UINT));
    BYTE* pData=new BYTE[dwSize];
    infile.read((char*)pData,dwSize);
    m_hrgn=ExtCreateRegion(NULL,dwSize,(LPRGNDATA)pData);
    infile.close();
    delete pData;
}



------解决方案--------------------
pRgn->CreateFromData( NULL, resSize, (LPRGNDATA)pBuffer );