void CReportEditDoc::OnFileOpen()
{
// TODO: 在此添加命令处理程序代码
CFileDialog dlg(TRUE, //TRUE为OPEN对话框,FALSE为SAVE AS对话框
NULL,
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
(LPCTSTR)_TEXT("Report Files (*.html)|*.html|All Files (*.*)|*.*||"),
NULL);
if(dlg.DoModal()==IDOK)
{
m_szFilePathName=dlg.GetPathName(); //文件名保存在了FilePathName里
}
else
{
return;
}
OnOpenDocument(m_szFilePathName);
}
void CReportEditDoc::OnFileSave()
{
// TODO: 在此添加命令处理程序代码
CString FilePathName;
CFileDialog dlg(FALSE, //TRUE为OPEN对话框,FALSE为SAVE AS对话框
_T("html"),
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_EXPLORER,
(LPCTSTR)_TEXT("Report Files (*.html)|*.html|Report Files (*.pdf)|*.pdf||"),
NULL);
if(dlg.DoModal()==IDOK)
{
FilePathName = dlg.GetPathName();
}
else
{
return;
}
CString szFiter = FilePathName.Right(4);
if(szFiter == _T("html"))
OnSaveDocument(FilePathName);
else if(szFiter == _T(".pdf"))
{
//先保存一个临时html文件
CString szTempFileName;
szTempFileName = ReturnPath() + _T("\\wkhtmltopdf\\temp.html");
//删除临时文件
::DeleteFile(szTempFileName);
OnSaveDocument(szTempFileName);
CString szParam = _T("\""); //解决路径中有空格
szParam += szTempFileName;
szParam += _T("\"");
szParam += _T(" ");
szParam +=_T("\"");
szParam += FilePathName;
szParam += _T("\"");
CString szExePathName = ReturnPath() + _T("\\wkhtmltopdf\\wkhtmltopdf.exe");
//执行转换
HINSTANCE rel = ShellExecute(NULL,NULL,szExePathName,szParam,NULL,SW_HIDE);
}
}
本文介绍了CReportEditDoc类中关于文件打开和保存的处理程序。使用CFileDialog实现文件选择对话框,支持HTML和PDF格式的文件操作,包括打开、保存HTML文件及通过wkhtmltopdf转换为PDF。
476

被折叠的 条评论
为什么被折叠?



