文件创建、数据写入、写入路径
void StdReferenceDWG::RefDrawCrvt(StdOneReference& ref)
{
char* old_locale = _strdup(setlocale(LC_CTYPE, NULL));
setlocale(LC_CTYPE, "chs");//设定
CString strPath = StdTool::GetCurPath() + _T("衬图\\ReferenceDrawPathCrt.txt");
CStdioFile file;
UINT nOpenFlags = CFile::modeWrite;
if (mvctCrtRefDrw.size() == 0)
{
if (file.Open(strPath, nOpenFlags))
{
file.Close();
file.Remove(strPath);
}
nOpenFlags = nOpenFlags | CFile::modeCreate;
}
mvctCrtRefDrw.push_back(ref);
if (!file.Open(strPath, nOpenFlags))
return;
file.SeekToEnd();
CString strKey; strKey.Format(_T("key=%d\n"), mvctCrtRefDrw.size()); file.WriteString(strKey);
CString strvalue;;
strvalue.Format(_T("%s\n" ), ref.mcstrReferenceDwgName ); file.WriteString(strvalue);
strvalue.Format(_T("%s\n" ), ref.mcstrReferenceDwgPath ); file.WriteString(strvalue);
strvalue.Format(_T("%d\n" ), ref.mbReferenceDwgShow ? 1 : 0 ); file.WriteString(strvalue);
strvalue.Format(_T("%d\n" ), ref.mbReferenceDwgLock ? 1 : 0 ); file.WriteString(strvalue);
strvalue.Format(_T("%0.1f\n" ), ref.mdReferenceDwgScale ); file.WriteString(strvalue);
strvalue.Format(_T("%0.1f\n" ), ref.mdReferenceDwgAngle ); file.WriteString(strvalue);
strvalue.Format(_T("%0.1f\n" ), ref.mdReferenceDwgRatio ); file.WriteString(strvalue);
strvalue.Format(_T("%0.10f,%0.10f,%0.10f\n"), ref.mptReferenceDwgPtBase.x, ref.mptReferenceDwgPtBase.y, ref.mptReferenceDwgPtBase.z ); file.WriteString(strvalue);
strvalue.Format(_T("%0.10f,%0.10f,%0.10f\n"), ref.mptReferenceDwgPtInsert.x, ref.mptReferenceDwgPtInsert.y, ref.mptReferenceDwgPtInsert.z); file.WriteString(strvalue);
file.Close();
setlocale(LC_CTYPE, old_locale);
free(old_locale);//还原区域设定
}
文件内容读取
void StdReferenceDWG::OpeOldPro()
{
char* old_locale = _strdup(setlocale(LC_CTYPE, NULL));
setlocale(LC_CTYPE, "chs");//设定
CString strPath = StdTool::GetCurPath() + _T("衬图\\ReferenceDrawPathCrt.txt");
CStdioFile file;
if (!file.Open(strPath, CFile::modeRead)) return;
CString strRed;
StdOneReference ref;
int i = 0;
while (file.ReadString(strRed))
{
if (i == 10)
{
mvctCrtRefDrw.push_back(ref);
i = 0;
}
if (i == 0)
{
if (strRed.Find(_T("key =")) != -1)
ref = StdOneReference();
strRed = L"";
i++;
continue;
}
else if (i == 1) ref.mcstrReferenceDwgName = strRed;
else if (i == 2) ref.mcstrReferenceDwgPath = strRed;
else if (i == 3) ref.mbReferenceDwgShow = strRed;
else if (i == 4) ref.mbReferenceDwgLock = strRed;
else if (i == 5) ref.mdReferenceDwgScale = _wtof(strRed.GetBuffer());
else if (i == 6) ref.mdReferenceDwgAngle = _wtof(strRed.GetBuffer());
else if (i == 7) ref.mdReferenceDwgRatio = _wtof(strRed.GetBuffer());
else if (i == 8) ref.mptReferenceDwgPtBase = GetPt(strRed);
else if (i == 9) ref.mptReferenceDwgPtInsert = GetPt(strRed);
strRed = L"";
i++;
}
file.Close();
setlocale(LC_CTYPE, old_locale);
free(old_locale);//还原区域设定
}