Vector Load and Save

Start with the project you created in Creating an empty vector.

Take the following steps to add vector load and save functionality:

1.

Select View->ClassView.

2.

Right click on CTutorialDoc and select properties.

3.

In the properties window select Overrides shortcut.

4.

Select OnOpenDocument and add its function.

5.

Add the following code to CTutorialDoc::OnOpenDocument():

BOOL CTutorialDoc::OnOpenDocument(LPCTSTR lpszPathName) 
{
   L_TCHAR szTemp[_MAX_PATH];
   L_BOOL bRet;
   L_INT  nRet;
   
   if (!CDocument::OnOpenDocument(lpszPathName))
      return FALSE;
   
   lstrcpy(szTemp, lpszPathName);
   nRet = m_pVectorWindow->Load (szTemp);
   
   if (nRet == SUCCESS)
   {
      m_pVectorWindow->EnableAutoScroll (TRUE);
      m_pVectorWindow->Reset ();
      
   }
   else
   {
      CString strTmp;
      
      strTmp.Format(TEXT("Error Loading File[%d]"), nRet);
      AfxMessageBox(strTmp);
      bRet = FALSE;
   }
   return bRet; 
}

6.

Select View->ClassView.

7.

Right click on CTutorialDoc and select properties.

8.

In the properties window select Overrides shortcut.

9.

Select OnSaveDocument and add its function.

10.

Code CTutorialDoc::OnSaveDocument() as follows:

BOOL CTutorialDoc::OnSaveDocument(LPCTSTR lpszPathName) 
{
   L_TCHAR       szFileName[_MAX_PATH];
   L_INT        nRet = 0;
   
   lstrcpy(szFileName, lpszPathName);
   
   //Apply any transformation before the save
   m_pVectorWindow->ApplyTransformation ();
   nRet = m_pVectorWindow->Save ( szFileName, m_iFileSaveType);
   if (nRet != SUCCESS)
   {
      CString strTmp;
      
      strTmp.Format(TEXT("Error Saving File[%d]"), nRet);
      AfxMessageBox(strTmp);
   }
   
   if (nRet == SUCCESS)
      SetModifiedFlag(FALSE);
   return (nRet == SUCCESS);
}

11.

Click on the "Class View" tab, right-click CTutorialDoc, and choose "Add Variable..."

12.

For "Variable Type" enter

L_INT

13.

For "Variable Name" enter

m_iFileSaveType

14.

Leave "Access" as public and click "Finish"

15.

Select View->ClassView.

16.

In the Class Name drop down box, right click on CTutorialView and select properties.

17.

In the properties window select Events shortcut.

18.

Select ID_FILE_SAVE then command then add OnFileSave

19.

Add the following code to CTutorialView::OnFileSave ()


   static const L_TCHAR szSaveFileFilter[] = TEXT("DXF(*.dxf)|*.dxf|WMF(*.wmf)|*.wmf|EMF(*.emf)|*.emf|DRW(*.drw)|*.drw|CGM(*.cgm)|*.cgm|PLT(*.plt)|*.plt|PCT(*.pct)|*.pct|Intergraph Vector(*.vec)|*.vec|TIF DXF(*.tif)|*.tif||");
   L_UINT uNotUsed;
   L_TCHAR szFileName[_MAX_PATH], *pszFileName;
   L_INT  nRet;

   nRet = GetDocument()->m_pVectorWindow->GetFileName (szFileName, &uNotUsed);
   pszFileName = (nRet == SUCCESS) ? szFileName : NULL;

   CFileDialog SaveDialog(
      FALSE, 
      TEXT("dxf"),
      pszFileName, 
      OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
      szSaveFileFilter,
      this
      );

   nRet = (L_INT)SaveDialog.DoModal();
   if (IDOK == nRet)
   {
      CString strFilename;
      strFilename = SaveDialog.GetPathName();
      L_INT nIndex = SaveDialog.m_ofn.nFilterIndex;
      switch (nIndex)
      {
      case 1:
         GetDocument()->m_iFileSaveType = FILE_DXF;
         break;

      case 2:
         GetDocument()->m_iFileSaveType = FILE_WMF;
         break;

      case 3:
         GetDocument()->m_iFileSaveType = FILE_EMF;
         break;

      case 4:
         GetDocument()->m_iFileSaveType = FILE_DRW;
         break;
         
      case 5 :
         GetDocument()->m_iFileSaveType = FILE_CGM;
         break;
         
      case 6:
         GetDocument()->m_iFileSaveType = FILE_PLT;
         break;
         
      case 7:
         GetDocument()->m_iFileSaveType = FILE_PCT;
         break;
         
      case 8:
         GetDocument()->m_iFileSaveType = FILE_INTERGRAPH_VECTOR;
         break;
         
      case 9:
         GetDocument()->m_iFileSaveType = FILE_TIF_DXF;
         break;
         
      }
      GetDocument()->OnSaveDocument(strFilename);
   }
}

20.

Select View->ClassView.

21.

In the Class Name drop down box, right click on CTutorialView and select properties.

22.

In the properties window select Events shortcut.

23.

Select ID_FILE_SAVE_AS then command then add OnFileSaveAs.

24.

Add the following code to CTutorialView::OnFileSaveAs ()

void CTutorialView::OnFileSaveAs() 
{
   OnFileSave();
}

25.

Compile and run the project. You will be able to view, load and save vector files as you browse your local hard disk. You can also use the numeric key pad to zoom in (+ key) and zoom out (- key).