void CDrawShapeView::OnFileSave() { if (m_filename.IsEmpty()) { CFileDialog dlg(FALSE, L".vg", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST, L"Shape files (*.vg)|*.vg||", this); if (dlg.DoModal() != IDOK) return; m_filename = dlg.GetPathName(); } MgJsonStorage s; shapes()->setZoomRectW(m_graph->xf.getWndRectW(), m_graph->xf.getViewScale()); if (shapes()->save(s.storageForWrite())) { const char* content = s.stringify(true); CFile file; if (file.Open(m_filename, CFile::modeWrite | CFile::modeCreate)) { file.Write(content, strlen(content)); } } else { AfxMessageBox(L"得到文件内容出错。"); } }