Start with the project you created in Implementing Vector Automation
Take the following steps to add vector load and save functionality:
Click on the "Class View" Tab.
Right-click on the CVecAutDoc branch and select Properties.
Click on the "Override" button of the Properties toolbar.
Click on the empty area next to OnOpenDocument then click on the arrow and select "OnOpenDocument".
Add the following code to CVecAutDoc::OnOpenDocument():
BOOL CVecAutDoc::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_VectorWindow. Load (szTemp);
if (nRet == SUCCESS)
{
m_VectorWindow. EnableAutoScroll (TRUE);
m_VectorWindow. Reset ();
}
else
{
CString strTmp;
strTmp.Format(TEXT("Error Loading File[%d]"), nRet);
AfxMessageBox(strTmp);
bRet = FALSE;
}
return bRet;
}
Click on the "Class View" Tab.
Right-click on the CvecAutDoc branch and select Properties.
Click on the "Override" button of the Properties toolbar.
Click on the empty area next to OnSaveDocument then click on the arrow and select "OnSaveDocument".
Add the following code to CTutorialDoc::OnSaveDocument():
BOOL CVecAutDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
L_TCHAR szFileName[_MAX_PATH];
L_INT nRet = 0;
lstrcpy(szFileName, lpszPathName);
//Apply any transformation before the save
m_VectorWindow. ApplyTransformation();
nRet = m_VectorWindow. 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);
}
Click on the "Class View" tab, right-click CVecAutDoc, and choose "Add Variable..."
For "Variable Type" enter:
L_INT
For "Variable Name" enter:
m_iFileSaveType
Leave "Access" as public and click "Ok".
Open "Resource View" tab. And double click IDR_MAINFRAME menu. Then From "File" menu, right click on "Save" item, and choose "Add Event Handler"
In the Class Name drop down box, select CVecAutView.
In the Messages drop down box, select COMMAND.
Click the Add And Edit button.
Add the following code to CVecAutView::OnFileSave():
void CVecAutView::OnFileSave()
{
L_TCHAR szSaveFileFilter[_MAX_PATH];
L_UINT uNotUsed;
L_TCHAR szFileName[_MAX_PATH], *pszFileName;
L_INT nRet;
lstrcpy((LPTSTR)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||"));
nRet = GetDocument()->m_VectorWindow. GetFileName (szFileName, &uNotUsed);
pszFileName = (nRet == SUCCESS) ? szFileName : NULL;
CFileDialog SaveDialog(
FALSE,
TEXT("dxf"),
(LPCTSTR)pszFileName,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
(LPCTSTR)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);
}
}
Open "Resource View" tab. And double click IDR_MAINFRAME menu. Then From "File" menu, right click on "Save As" item, and choose "Add Event Handler"
In the Class Name drop down box, select CVecAutView.
In the Messages drop down box, select COMMAND.
Click the "Add and Edit"
Add the following code to CVecAutView::OnFileSaveAs():
void CVecAutView::OnFileSaveAs()
{
OnFileSave();
}
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 keypad to zoom in (+ key) and zoom out (- key).