📄 projectnamepage.cpp
字号:
// ProjectNamePage.cpp : implementation file
//
#include "stdafx.h"
#include "Scan2PDF.h"
#include "ProjectNamePage.h"
#include "Scan2PDFDefs.h"
#include <fstream>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CProjectNamePage property page
IMPLEMENT_DYNCREATE(CProjectNamePage, CPropertyPageEx)
CProjectNamePage::CProjectNamePage() : CPropertyPageEx(CProjectNamePage::IDD, 0,
IDS_PROJECT_HEADER, IDS_PROJECT_SUBHEADER)
{
//{{AFX_DATA_INIT(CProjectNamePage)
m_ProjectName = _T("");
//}}AFX_DATA_INIT
}
CProjectNamePage::~CProjectNamePage()
{
}
void CProjectNamePage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPageEx::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CProjectNamePage)
DDX_Control(pDX, IDC_PROJECT_NAME_COMBO, m_Projects);
DDX_Text(pDX, IDC_PROJECT_NAME, m_ProjectName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CProjectNamePage, CPropertyPageEx)
//{{AFX_MSG_MAP(CProjectNamePage)
ON_EN_CHANGE(IDC_PROJECT_NAME, OnChangeProjectName)
ON_CBN_EDITCHANGE(IDC_PROJECT_NAME_COMBO, OnEditChangeProjectNameCombo)
ON_CBN_SELCHANGE(IDC_PROJECT_NAME_COMBO, OnSelChangeProjectNameCombo)
ON_CBN_CLOSEUP(IDC_PROJECT_NAME_COMBO, OnCloseupProjectNameCombo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CProjectNamePage message handlers
BOOL CProjectNamePage::OnSetActive()
{
CPropertySheetEx* pParent=(CPropertySheetEx*) GetParent();
CString szProjectName;
m_Projects.GetWindowText(szProjectName);
UpdateData(TRUE);
//if (m_ProjectName.IsEmpty())
if (szProjectName.IsEmpty())
pParent->SetWizardButtons(PSWIZB_BACK);
else
pParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
return CPropertyPageEx::OnSetActive();
}
LRESULT CProjectNamePage::OnWizardNext()
{
UpdateData(TRUE);
CString szProjectName;
m_Projects.GetWindowText(szProjectName);
if (szProjectName.GetLength()>10)
{
AfxMessageBox("The length of project name exceeds the limit of 10 characters.\n"
"Please correct the project name.", MB_ICONERROR);
return -1;
}
//theConf.m_ProjectName=m_ProjectName;
theConf.m_ProjectName=szProjectName;
//check for file
CString szProjectFile;
szProjectFile.Format("%s.prj", szProjectName.GetBuffer(0));
ifstream MyFile;
MyFile.open(szProjectFile);
if (!MyFile.fail())
{
int iResult=AfxMessageBox("The project already exist.\n"
"Do you want to add new PDF to this project?", MB_YESNO | MB_ICONINFORMATION);
if (iResult==IDNO)
return -1;
//if yes -> use the old project file
char TempProjectSize[256], TempPDFFileName[256];
MyFile.getline(TempProjectSize, 256);
DWORD dwSize=atol(TempProjectSize);
theConf.m_ProjectSize=dwSize;
while (!MyFile.eof())
{
MyFile.getline(TempPDFFileName, 256);
CString szTmp=TempPDFFileName;
szTmp.TrimLeft();
szTmp.TrimRight();
if (!szTmp.IsEmpty())
theConf.m_PDFs.push_back(szTmp);
}
MyFile.close();
}
else
{
theConf.m_ProjectSize=0;
}
/*
FILE* fp=fopen(szProjectFile.GetBuffer(0), "rt");
if (fp!=NULL) //file exist
{
DWORD dwSize;
fscanf(fp, "%d", &dwSize);
theConf.m_ProjectSize=dwSize;
fclose(fp);
}
else
{
theConf.m_ProjectSize=0;
}
*/
//create directory
CreateDirectory(szProjectName, NULL);
return CPropertyPageEx::OnWizardNext();
}
void CProjectNamePage::OnChangeProjectName()
{
UpdateData(TRUE);
CPropertySheetEx* pParent=(CPropertySheetEx*) GetParent();
if (m_ProjectName.IsEmpty())
pParent->SetWizardButtons(PSWIZB_BACK);
else
pParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
}
BOOL CProjectNamePage::OnInitDialog()
{
CPropertyPageEx::OnInitDialog();
//Enumerate Projects
EnumProjects();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CProjectNamePage::EnumProjects()
{
WIN32_FIND_DATA FileData;
HANDLE hSearch = FindFirstFile("*.prj", &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
return;
}
BOOL fFinished = FALSE;
while (!fFinished)
{
CString projectname=FileData.cFileName;
projectname.Replace(".prj", "");
m_Projects.AddString(projectname);
if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
fFinished = TRUE;
else
return;
}
}
// Close the search handle.
FindClose(hSearch);
}
void CProjectNamePage::OnEditChangeProjectNameCombo()
{
CString szProjectName;
m_Projects.GetWindowText(szProjectName);
UpdateData(TRUE);
CPropertySheetEx* pParent=(CPropertySheetEx*) GetParent();
if (szProjectName.IsEmpty())
pParent->SetWizardButtons(PSWIZB_BACK);
else
pParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
}
void CProjectNamePage::OnSelChangeProjectNameCombo()
{
OnEditChangeProjectNameCombo();
}
void CProjectNamePage::OnCloseupProjectNameCombo()
{
OnEditChangeProjectNameCombo();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -