// PMerge.cpp : implementation file // #include "stdafx.h" #include "cb32.h" #include "PMerge.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPMerge dialog CPMerge::CPMerge(CWnd* pParent /*=NULL*/) : CDialog(CPMerge::IDD, pParent) { //{{AFX_DATA_INIT(CPMerge) m_pmLaunch = FALSE; //}}AFX_DATA_INIT } void CPMerge::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPMerge) DDX_Control(pDX, IDC_PMLAUNCH, m_cLaunch); DDX_Control(pDX, IDC_PM_VIEW, m_pmcView); DDX_Control(pDX, IDC_PM_FILE, m_pmcFile); DDX_Control(pDX, IDC_PM_EDIT, m_pmcEdit); DDX_Control(pDX, IDC_PMTEMPLATE, m_pmTemplate); DDX_Check(pDX, IDC_PMLAUNCH, m_pmLaunch); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPMerge, CDialog) //{{AFX_MSG_MAP(CPMerge) ON_CBN_SELCHANGE(IDC_PMTEMPLATE, OnSelchangePmtemplate) ON_CBN_SELENDOK(IDC_PMTEMPLATE, OnSelendokPmtemplate) ON_BN_CLICKED(IDC_PMBROW_EDIT, OnPmbrowEdit) ON_BN_CLICKED(IDC_PMBROW_FILE, OnPmbrowFile) ON_BN_CLICKED(IDC_PMBROW_VIEW, OnPmbrowView) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPMerge message handlers BOOL CPMerge::OnInitDialog() { CDialog::OnInitDialog(); CString strTpl = theApp.m_pszPathToExe + "TMPL\\*.TPL"; WIN32_FIND_DATA fileData; HANDLE hFind = FindFirstFile(strTpl, &fileData); if (hFind != INVALID_HANDLE_VALUE) { CString szTemp = fileData.cFileName; szTemp = szTemp.Left(szTemp.ReverseFind('.')); CString myFile = theApp.m_pszPathToExe + "TMPL\\" + szTemp; if (TestForTemplate(myFile)) m_pmTemplate.AddString(szTemp); while (FindNextFile(hFind, &fileData)) { szTemp = fileData.cFileName; szTemp = szTemp.Left(szTemp.ReverseFind('.')); myFile = theApp.m_pszPathToExe + "TMPL\\" + szTemp; if (TestForTemplate(myFile)) m_pmTemplate.AddString(szTemp); } } FindClose(hFind); // change to search for last template strTpl = theApp.GetProfileString(_T("Print"),_T("Template"),NULL); if (!strTpl.IsEmpty()) m_pmTemplate.SetCurSel(m_pmTemplate.FindString(-1, strTpl)); else m_pmTemplate.SetCurSel(0); LoadTemplateData(); return TRUE; } void CPMerge::OnOK() { if (m_pmTemplate.GetCount() > 0) { SaveTemplateData(); CString myTmpl; m_pmTemplate.GetLBText(m_pmTemplate.GetCurSel(),myTmpl); theApp.WriteProfileString(_T("Print"),_T("Template"),myTmpl); } CDialog::OnOK(); } void CPMerge::LoadTemplateData() { if (m_pmTemplate.GetCount() > 0) { CString myTmpl; char chTmp[_MAX_PATH]; m_pmTemplate.GetLBText(m_pmTemplate.GetCurSel(),myTmpl); GetPrivateProfileString("Template","Editor",NULL,chTmp,sizeof(chTmp), theApp.m_pszPathToExe+"TMPL\\"+ myTmpl+".tpl"); m_pmcEdit.SetWindowText(chTmp); GetPrivateProfileString("Template","Output",NULL,chTmp,sizeof(chTmp), theApp.m_pszPathToExe+"TMPL\\"+ myTmpl+".tpl"); m_pmcFile.SetWindowText(chTmp); GetPrivateProfileString("Template","Viewer",NULL,chTmp,sizeof(chTmp), theApp.m_pszPathToExe+"TMPL\\"+ myTmpl+".tpl"); m_pmcView.SetWindowText(chTmp); m_pmLaunch = GetPrivateProfileInt("Template","Launch",0, theApp.m_pszPathToExe+"TMPL\\"+ myTmpl+".tpl"); m_cLaunch.SetCheck((m_pmLaunch)?1:0); } } void CPMerge::SaveTemplateData() { if (m_pmTemplate.GetCount() > 0) { CString myTmpl; char chTmp[_MAX_PATH]; m_pmTemplate.GetLBText(m_pmTemplate.GetCurSel(),myTmpl); UpdateData(TRUE); m_pmcEdit.GetWindowText(chTmp, sizeof(chTmp)); WritePrivateProfileString("Template","Editor",chTmp, theApp.m_pszPathToExe+"TMPL\\"+ myTmpl+".tpl"); m_pmcFile.GetWindowText(chTmp, sizeof(chTmp)); WritePrivateProfileString("Template","Output",chTmp, theApp.m_pszPathToExe+"TMPL\\"+ myTmpl+".tpl"); m_pmcView.GetWindowText(chTmp, sizeof(chTmp)); WritePrivateProfileString("Template","Viewer",chTmp, theApp.m_pszPathToExe+"TMPL\\"+ myTmpl+".tpl"); sprintf(chTmp,"%d",(m_pmLaunch)?'1':'0'); WritePrivateProfileString("Template","Launch",chTmp, theApp.m_pszPathToExe+"TMPL\\"+ myTmpl+".tpl"); } } BOOL CPMerge::TestForTemplate(CString strTName) { CFileStatus fsTest; CFile tFile; if (tFile.GetStatus(strTName+".tpl", fsTest) && tFile.GetStatus(strTName+".hed", fsTest) && tFile.GetStatus(strTName+".bod", fsTest) && tFile.GetStatus(strTName+".fot", fsTest)) return TRUE; else return FALSE; } void CPMerge::OnSelchangePmtemplate() { SaveTemplateData(); } void CPMerge::OnSelendokPmtemplate() { LoadTemplateData(); } void CPMerge::OnPmbrowEdit() { CFileDialog FileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, TEXT("All Files (*.*)|*.*||"), AfxGetMainWnd()); CString strTemp; strTemp.LoadString(IDS_OFN_EXE); FileDlg.m_ofn.lpstrTitle = strTemp; if (FileDlg.DoModal() == IDOK) { CString fileName = FileDlg.GetPathName(); m_pmcEdit.SetWindowText(fileName); } } void CPMerge::OnPmbrowFile() { CFileDialog FileDlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOTESTFILECREATE, TEXT("All Files (*.*)|*.*||"), AfxGetMainWnd()); CString strTemp; strTemp.LoadString(IDS_OFN_OUT); FileDlg.m_ofn.lpstrTitle = strTemp; if (FileDlg.DoModal() == IDOK) { CString fileName = FileDlg.GetPathName(); m_pmcFile.SetWindowText(fileName); } } void CPMerge::OnPmbrowView() { CFileDialog FileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, TEXT("All Files (*.*)|*.*||"), AfxGetMainWnd()); CString strTemp; strTemp.LoadString(IDS_OFN_EXE); FileDlg.m_ofn.lpstrTitle = strTemp; if (FileDlg.DoModal() == IDOK) { CString fileName = FileDlg.GetPathName(); m_pmcView.SetWindowText(fileName); } }