过路的大虾:
如何用 CPrintDialog 打印一个TXT 文档阿??例如我要用 CPrintDialog 把 a.txt 给打印出来怎么把 a.txt 的路径传给 CPrintDialog 阿??帮助文件中没有提到过这个晕
如何用 CPrintDialog 打印一个TXT 文档阿??例如我要用 CPrintDialog 把 a.txt 给打印出来怎么把 a.txt 的路径传给 CPrintDialog 阿??帮助文件中没有提到过这个晕
先把文件讀出來一行一行存放在vector裏面,然後再用CPrintDialog 一行一行打印出來
我不懂啊vector是个什么东西啊??难道 CPrintDialog 就不能像 ShellExcute(..."print"....) 那样只要提供个文件的路径就能打印吗??ShellExcute 不能选择打印机阿,所以感觉不怎么友好阿。
using namespace std;
void CYouDlg::OnBnClickedButton1()
{
vector<CString> vecTmp;
static char BASED_CODE szFilter[] =
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||"; CFileDialog fileDlg(TRUE, NULL, "OpenFileDlg", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
szFilter, NULL,0);
if(fileDlg.DoModal() == IDOK){ ifstream ifs;
string str;
ifs.open(fileDlg.GetPathName());
if (!ifs.is_open()) {
throw ;
}
while(!ifs.eof())
{
getline(ifs, str);
vecTmp.push_back(str.c_str());
}
} CPrintDialog printDlg(TRUE, PD_ALLPAGES|PD_ALLPAGES|PD_NOPAGENUMS, NULL);
if(printDlg.DoModal() == IDCANCEL)
return;
CDC dcPrinter;
PRINTDLG *pPrintDlg = &printDlg.m_pd;
AfxGetApp()->GetPrinterDeviceDefaults(pPrintDlg);
DEVMODE* lpDevMode = (DEVMODE*)::GlobalLock(pPrintDlg->hDevMode);
::GlobalUnlock(pPrintDlg->hDevMode);
lpDevMode->dmPaperSize = DMPAPER_A3; //A3 297 x 420 mm
lpDevMode->dmOrientation = DMORIENT_LANDSCAPE; //橫向
dcPrinter.Attach(printDlg.CreatePrinterDC());
// initialize DOCINFO
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
CString title;
GetWindowText(title);
docinfo.lpszDocName = title; // if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("プリンタを初期化できません"));
return;
} if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("ページ処理を開始できません"));
dcPrinter.AbortDoc();
return;
} for (size_t i = 0, v = 0; i < vecTmp.size(); ++i) {
dcPrinter.TextOut(0, v, vecTmp[i]);
v += 100; }
dcPrinter.EndPage();
dcPrinter.EndDoc();
}
ShellExecute(this->m_hWnd, "print", "D:\\test.txt","","", SW_SHOW);
#include <fstream>
#include <iostream>