资料操作的困惑

文件操作的困惑
我在一个工程中新建立一个文件后. 关闭. 在存盘操作中再打开该文件进行覆盖写操作. 流程如下:

CFile CFGfile(tempCFG,CFile::modeCreate | CFile::modeWrite);
CFGfile.Write(TxtFile,CFG_HEAD + sizeof(Console) * (CurrentProject.TheProject.CFG_File.CFG_Content.Group_Number + CurrentProject.TheProject.CFG_File.CFG_Content.Single_Number));
CFGfile.Close();
但发现新建立文件后写数据关闭后. 再打开Seek操作出错提示filecore.cpp出错. 
void CMainFrame::OnProSave() 
{
// TODO: Add your command handler code here
if(CurrentProject.Changed)
{
CFile file;
file.Open(CurrentProject.Path + "\\" + CurrentProject.name + ".cfg",CFile::modeRead | CFile::modeWrite,0); 

// 读取cfg文件头信息 
// file.Read(CurrentProject.TheProject.CFG_File.Data,CFG_HEAD); 
// CurrentProject.TheProject.AllConsol = (Console*)malloc(sizeof(Console) * (CurrentProject.TheProject.CFG_File.CFG_Content.Single_Number + CurrentProject.TheProject.CFG_File.CFG_Content.Group_Number));//申请一个内存存放控制台信息

//读取控制台信息
file.Seek(sizeof(CFG_HEAD),CFile::begin);  //从文件头开始往下移动41字节(cfg文件头信息)
file.Write(CurrentProject.TheProject.AllConsol, sizeof(Console) * (CurrentProject.TheProject.CFG_File.CFG_Content.Single_Number + CurrentProject.TheProject.CFG_File.CFG_Content.Group_Number)); 

file.Close(); 
}
}

跟踪到:
LONG CFile::Seek(LONG lOff, UINT nFrom)
{
ASSERT_VALID(this);
ASSERT(m_hFile != (UINT)hFileNull);
ASSERT(nFrom == begin || nFrom == end || nFrom == current);
ASSERT(begin == FILE_BEGIN && end == FILE_END && current == FILE_CURRENT);

DWORD dwNew = ::SetFilePointer((HANDLE)m_hFile, lOff, NULL, (DWORD)nFrom);
if (dwNew  == (DWORD)-1)
CFileException::ThrowOsError((LONG)::GetLastError());

return dwNew;
}
ASSERT(m_hFile != (UINT)hFileNull);停留在这一行

------解决方案--------------------
file.Open(CurrentProject.Path + "\\" + CurrentProject.name + ".cfg",CFile::modeRead 
------解决方案--------------------
 CFile::modeWrite,0); 
------------
CFile::Open()操作成功?