|
|
|
|
|
#include "StdAfx.h"
|
|
|
|
|
|
//#include "DFDrawProDoc.h"
|
|
|
|
|
|
//#include "DFDrawProView.h"
|
|
|
|
|
|
#include ".\PublicParam.h"
|
|
|
|
|
|
//#include ".\previewviewex.h"
|
|
|
|
|
|
//#include ".\TreePropertySheet.h"
|
|
|
|
|
|
#include "ScaleSelectPage.h"
|
|
|
|
|
|
#include "ScaleUnitPage.h"
|
|
|
|
|
|
#include "ScaleViewPage.h"
|
|
|
|
|
|
//#include ".\mainfrm.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CPublicParam theParam;
|
|
|
|
|
|
|
|
|
|
|
|
CPublicParam& CPublicParam::GetParam()
|
|
|
|
|
|
{
|
|
|
|
|
|
return theParam;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CPublicParam::CPublicParam(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pPageSetup = NULL;
|
|
|
|
|
|
m_nRefPageSetupCounter = 0;
|
|
|
|
|
|
m_pDocType = NULL;
|
|
|
|
|
|
m_nRefDocTypeCounter = 0;
|
|
|
|
|
|
m_nRefUndoManager = 0;
|
|
|
|
|
|
m_nRefCursorCounter = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CPublicParam::~CPublicParam(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CString CPublicParam::GetSaveDefaultExt(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
CString strExt = _T(".kev");
|
|
|
|
|
|
|
|
|
|
|
|
//switch(::GetPreferences().WorkaroundSave.m_nDefaultSaveFormat)
|
|
|
|
|
|
//{
|
|
|
|
|
|
//case 0: strExt=_T(".dfd"); break;
|
|
|
|
|
|
//default:
|
|
|
|
|
|
//case 1: strExt=_T(".dfb"); break;
|
|
|
|
|
|
//case 2: strExt=_T(".dml"); break;
|
|
|
|
|
|
//}
|
|
|
|
|
|
return strExt;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// prompt for file name - used for open and save as
|
|
|
|
|
|
BOOL CPublicParam::DoPromptFileNameEx(CString& fileName, UINT nIDSTitle, DWORD lFlags,
|
|
|
|
|
|
BOOL bOpenFileDialog, int* pDocType/*=NULL*/)
|
|
|
|
|
|
{
|
|
|
|
|
|
int nDefaultType= DF_FORMAT_ASCII;
|
|
|
|
|
|
//switch(::GetPreferences().WorkaroundSave.m_nDefaultSaveFormat)
|
|
|
|
|
|
//{
|
|
|
|
|
|
//case 0: nDefaultType=DF_FORMAT_ASCII; break;
|
|
|
|
|
|
//case 1: nDefaultType=DF_FORMAT_BINARY; break;
|
|
|
|
|
|
// //case 2: nDefaultType=DF_FORMAT_DML; break;
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
CString title=_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ");
|
|
|
|
|
|
INT_PTR nResult = m_pDocType->FileDialog(bOpenFileDialog, title, fileName,
|
|
|
|
|
|
lFlags, pDocType, nDefaultType);
|
|
|
|
|
|
|
|
|
|
|
|
return nResult == IDOK ? TRUE:FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CPublicParam::DoOpenFileDialog(CString strTitle, CStringList& fileNameList,
|
|
|
|
|
|
DWORD lFlags /*=OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT*/,
|
|
|
|
|
|
int* pDocTypeID /*=NULL*/, BOOL bAppendAllFileType/*=TRUE*/,
|
|
|
|
|
|
CWnd* pParentWnd/*=NULL*/, BOOL bVistaStyle/*=TRUE*/)
|
|
|
|
|
|
{
|
|
|
|
|
|
int nDefaultType= DF_FORMAT_ASCII;
|
|
|
|
|
|
//switch(::GetPreferences().WorkaroundSave.m_nDefaultSaveFormat)
|
|
|
|
|
|
//{
|
|
|
|
|
|
//case 0: nDefaultType=DF_FORMAT_ASCII; break;
|
|
|
|
|
|
//case 1: nDefaultType=DF_FORMAT_BINARY; break;
|
|
|
|
|
|
// //case 2: nDefaultType=DF_FORMAT_DML; break;
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
INT_PTR nResult = m_pDocType->OpenFileDialog(strTitle, fileNameList, lFlags, pDocTypeID,
|
|
|
|
|
|
nDefaultType, bAppendAllFileType, pParentWnd, bVistaStyle);
|
|
|
|
|
|
|
|
|
|
|
|
return nResult == IDOK ? TRUE:FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::Initial() //<2F><>ʼ<EFBFBD><CABC>
|
|
|
|
|
|
{
|
|
|
|
|
|
//m_cursor.InitialCursor();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::refAll() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
refDocType();
|
|
|
|
|
|
//refPageSetup();
|
|
|
|
|
|
//refUndoManager();
|
|
|
|
|
|
//refCursor();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::unrefAll()
|
|
|
|
|
|
{
|
|
|
|
|
|
unrefDocType();
|
|
|
|
|
|
//unrefPageSetup();
|
|
|
|
|
|
//unrefUndoManager();
|
|
|
|
|
|
//unrefCursor();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::refCursor()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_nRefCursorCounter++;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::unrefCursor()
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_nRefCursorCounter <= 0) return;
|
|
|
|
|
|
m_nRefCursorCounter--;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::refPageSetup(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
//m_nRefPageSetupCounter ++;
|
|
|
|
|
|
//if(m_pPageSetup == NULL)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// m_pPageSetup=new CPrintPageSetup;
|
|
|
|
|
|
// ((CPrintPageSetup*)m_pPageSetup)->Read(GetDrawINI());
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::unrefPageSetup(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
//if(m_nRefPageSetupCounter <= 0) return;
|
|
|
|
|
|
//m_nRefPageSetupCounter--;
|
|
|
|
|
|
//if(m_nRefPageSetupCounter == 0)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// delete (CPrintPageSetup*)m_pPageSetup;
|
|
|
|
|
|
// m_pPageSetup=NULL;
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::refDocType()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_nRefDocTypeCounter++;
|
|
|
|
|
|
if(m_pDocType == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pDocType=new CDocType;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::unrefDocType()
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_nRefDocTypeCounter <= 0) return;
|
|
|
|
|
|
m_nRefDocTypeCounter--;
|
|
|
|
|
|
if(m_nRefDocTypeCounter == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
delete (CDocType*)m_pDocType;
|
|
|
|
|
|
m_pDocType = NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::refUndoManager()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_nRefUndoManager++;
|
|
|
|
|
|
if(m_nRefUndoManager == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
//CDrawUndoManager::CreateUndoManager();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::unrefUndoManager()
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_nRefUndoManager <= 0) return;
|
|
|
|
|
|
|
|
|
|
|
|
m_nRefUndoManager--;
|
|
|
|
|
|
if(m_nRefUndoManager == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
//CDrawUndoManager::DeleteUndoManager();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPublicParam::PrintPageSetup(CWnd* pMainWnd)
|
|
|
|
|
|
{
|
|
|
|
|
|
//CPrintPageSetup* pPageSetup = m_pPageSetup;
|
|
|
|
|
|
|
|
|
|
|
|
//CPropertySheet sheet("Print");
|
|
|
|
|
|
//sheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
|
|
|
|
|
|
//sheet.AddPage(pPageSetup);
|
|
|
|
|
|
//if(sheet.DoModal()!=IDOK) return;
|
|
|
|
|
|
//if(pPageSetup->m_bPreview)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// pPageSetup->m_bPreview=FALSE;
|
|
|
|
|
|
// pMainWnd->SendMessage(WM_COMMAND,ID_FILE_PRINT_PREVIEW);
|
|
|
|
|
|
//}
|
|
|
|
|
|
//CMainFrame* pMainFrame = DYNAMIC_DOWNCAST(CMainFrame, pMainWnd);
|
|
|
|
|
|
//if(pMainFrame==NULL) return;
|
|
|
|
|
|
//CFrameWnd* pFrame = pMainFrame->MDIGetActive();
|
|
|
|
|
|
//if(!pFrame)return;
|
|
|
|
|
|
|
|
|
|
|
|
//CDrawDoc* pDoc=NULL;
|
|
|
|
|
|
//NCustomCtrl::CPreviewViewDraw* pView = DYNAMIC_DOWNCAST(NCustomCtrl::CPreviewViewDraw, pFrame->GetActiveView());
|
|
|
|
|
|
//if(pView)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// pDoc=(CDrawDoc *)(pView->GetDocument());
|
|
|
|
|
|
// if(pDoc->m_pItemPrint)
|
|
|
|
|
|
// pDoc->m_pItemPrint->ClearPreviewDC();
|
|
|
|
|
|
// pMainWnd->SendMessage(WM_COMMAND,ID_VIEW_REDRAW);
|
|
|
|
|
|
// return;
|
|
|
|
|
|
//}
|
|
|
|
|
|
//CDrawView* pdv = DYNAMIC_DOWNCAST(CDrawView, pFrame->GetActiveView());
|
|
|
|
|
|
//if(pdv)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// pDoc=pdv->GetDocument();
|
|
|
|
|
|
// if(pDoc->m_pItemPrint)
|
|
|
|
|
|
// pDoc->m_pItemPrint->ClearPreviewDC();
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ȱʡ<C8B1><CAA1>ӡ<EFBFBD><D3A1><EFBFBD>Ĵ<EFBFBD>ӡֽ<D3A1><D6BD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void CPublicParam::SetDefaultPrintOrientation(UINT nOrientation)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|
|
|
|
|
PRINTDLG pd;
|
|
|
|
|
|
pd.lStructSize=(DWORD)sizeof(PRINTDLG);
|
|
|
|
|
|
BOOL bRet=::AfxGetApp()->GetPrinterDeviceDefaults(&pd);
|
|
|
|
|
|
if(bRet)
|
|
|
|
|
|
{
|
|
|
|
|
|
// protect memory handle with ::GlobalLock and ::GlobalUnlock
|
|
|
|
|
|
DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(pd.hDevMode);
|
|
|
|
|
|
// set orientation to landscape
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>: DMORIENT_LANDSCAPE
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>: DMORIENT_PORTRAIT
|
|
|
|
|
|
pDevMode->dmOrientation=nOrientation;
|
|
|
|
|
|
::GlobalUnlock(pDevMode);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///< <20><><EFBFBD><EFBFBD>scaleHeightΪ 1<><31><EFBFBD>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>
|
|
|
|
|
|
BOOL CPublicParam::DoScaleSetDialog(CSize8& scale, CSize &unit, bool bSameXY, CWnd* pParentWnd)
|
|
|
|
|
|
{
|
|
|
|
|
|
CPropertySheet sheet(IDS_STRING_SCALE_WIZARD, pParentWnd);
|
|
|
|
|
|
sheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
|
|
|
|
|
|
|
|
|
|
|
|
CScaleUnitPage UnitPage;
|
|
|
|
|
|
CScaleSelectPage SelectPage;
|
|
|
|
|
|
sheet.AddPage(&SelectPage);
|
|
|
|
|
|
sheet.AddPage(&UnitPage);
|
|
|
|
|
|
|
|
|
|
|
|
SelectPage.m_bXnotY = !bSameXY;
|
|
|
|
|
|
UnitPage.m_bXnotY = !bSameXY;
|
|
|
|
|
|
UnitPage.m_xunitSel = unit.cx;
|
|
|
|
|
|
UnitPage.m_yunitSel = unit.cy;
|
|
|
|
|
|
|
|
|
|
|
|
///< ת<><D7AA>Ϊ1<CEAA><31><EFBFBD>״<EFBFBD><D7B4><EFBFBD>ʵ<EFBFBD>ʶ<EFBFBD><CAB6>ٺ<EFBFBD><D9BA><EFBFBD>
|
|
|
|
|
|
double ddx, ddy;
|
|
|
|
|
|
ddx = scale.cx * UnitPage.GetUnit(unit.cx);
|
|
|
|
|
|
ddy = scale.cy * UnitPage.GetUnit(unit.cy);
|
|
|
|
|
|
|
|
|
|
|
|
AfxGetPublicFunction()->FloatToString(SelectPage.m_xscale, ddx, 10);
|
|
|
|
|
|
AfxGetPublicFunction()->FloatToString(SelectPage.m_yscale, ddy, 10);
|
|
|
|
|
|
|
|
|
|
|
|
INT_PTR rt = sheet.DoModal();
|
|
|
|
|
|
if(rt != IDOK && rt != ID_WIZFINISH) return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>ĵ<EFBFBD>λ
|
|
|
|
|
|
unit.cx = UnitPage.m_xunitSel;
|
|
|
|
|
|
unit.cy = UnitPage.m_yunitSel;
|
|
|
|
|
|
|
|
|
|
|
|
///< <20><><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
|
|
|
|
|
|
scale.cx = atof(SelectPage.m_xscale); //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
scale.cy = atof(SelectPage.m_yscale); //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
scale.cx /= UnitPage.GetUnit(unit.cx); //<2F><>λ<EFBFBD><CEBB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>λ
|
|
|
|
|
|
|
|
|
|
|
|
switch(unit.cy)
|
|
|
|
|
|
{
|
|
|
|
|
|
case CUnit::UNIT_SECOND: //Ϊʱ<CEAA>䵥λʱ
|
|
|
|
|
|
case CUnit::UNIT_MS:
|
|
|
|
|
|
ddy = UnitPage.GetUnit(unit.cy);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
scale.cy /= UnitPage.GetUnit(unit.cy); //<2F><>λ<EFBFBD><CEBB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>λ
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// < <20><><EFBFBD><EFBFBD>scale<6C><65>һ<EFBFBD><D2BB>ʵ<EFBFBD>ʵ<EFBFBD>λ<EFBFBD>ĺ<EFBFBD><C4BA>׳<EFBFBD><D7B3><EFBFBD>
|
|
|
|
|
|
BOOL CPublicParam::DoScaleViewDialog(CSize8& scale, CSize &unit, CWnd* pParentWnd)
|
|
|
|
|
|
{
|
|
|
|
|
|
CPropertySheet sheet(IDS_STRING_PANE_PROPERTIES, pParentWnd);
|
|
|
|
|
|
sheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
|
|
|
|
|
|
|
|
|
|
|
|
CScaleViewPage page;
|
|
|
|
|
|
sheet.AddPage(&page);
|
|
|
|
|
|
|
|
|
|
|
|
///< ת<><D7AA>Ϊ 1<><31><EFBFBD>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>
|
|
|
|
|
|
CSize8 st = scale;
|
|
|
|
|
|
st.cx = 1.0/scale.cx;
|
|
|
|
|
|
st.cy = 1.0/scale.cy;
|
|
|
|
|
|
|
|
|
|
|
|
char s[256];
|
|
|
|
|
|
AfxGetPublicFunction()->FloatToString(s, st.cx, 10); page.m_strPrintX="1"; page.m_strRealX=s;
|
|
|
|
|
|
AfxGetPublicFunction()->FloatToString(s, st.cy, 10); page.m_strPrintY="1"; page.m_strRealY=s;
|
|
|
|
|
|
|
|
|
|
|
|
page.m_unit = unit;
|
|
|
|
|
|
|
|
|
|
|
|
if(sheet.DoModal()!=IDOK) return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
unit = page.m_unit;
|
|
|
|
|
|
|
|
|
|
|
|
double sr = 1, sp = 1;
|
|
|
|
|
|
sscanf(page.m_strPrintX, "%lf", &sp); sscanf(page.m_strRealX, "%lf", &sr);
|
|
|
|
|
|
if(fabs(sr) > 1e-10) scale.cx = sp/sr; //һ<><D2BB>ʵ<EFBFBD>ʵ<EFBFBD>λ<EFBFBD>ĺ<EFBFBD><C4BA>׳<EFBFBD><D7B3><EFBFBD>
|
|
|
|
|
|
sscanf(page.m_strPrintY, "%lf", &sp); sscanf(page.m_strRealY, "%lf", &sr);
|
|
|
|
|
|
if(fabs(sr) > 1e-10) scale.cy = sp/sr; //һ<><D2BB>ʵ<EFBFBD>ʵ<EFBFBD>λ<EFBFBD>ĺ<EFBFBD><C4BA>׳<EFBFBD><D7B3><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///< <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>洢<EFBFBD><E6B4A2>·<EFBFBD><C2B7>
|
|
|
|
|
|
CString CPublicParam::GetTemplatePath()
|
|
|
|
|
|
{
|
|
|
|
|
|
CSplitPath sp;
|
|
|
|
|
|
sp.SetModuleFileName();
|
|
|
|
|
|
return sp.GetPath()+"Template\\";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CString CPublicParam::GetTemplatePathPlane()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetTemplatePath()+"Plane\\";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CString CPublicParam::GetTemplatePathColumn()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetTemplatePath()+"Column\\";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CString CPublicParam::GetTemplatePathCorrelation()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetTemplatePath()+"Correlation\\";
|
|
|
|
|
|
}
|
|
|
|
|
|
|