cprintdialog预览_在VC对话框中实现打印和打印预览
时间: 2023-06-24 15:03:50 浏览: 195
DlgPrint.rar_DlgPreprint.exe_dlgprint_对话框 打印_对话框 打印预览_打印预览
在VC对话框中实现打印和打印预览,可以使用MFC提供的CPrintDialog类和CPreviewView类。
首先,在对话框类中添加“打印”和“打印预览”按钮,并为其添加相应的响应函数。
接着,在“打印”按钮的响应函数中,创建一个CPrintDialog对象,并调用其DoModal函数显示打印对话框。用户选择打印机和打印选项后,可以获取选项的信息,并进行打印操作。
示例代码:
```
void CMyDialog::OnPrint()
{
CPrintDialog printDlg(FALSE);
if (printDlg.DoModal() == IDOK)
{
CDC dc;
dc.Attach(printDlg.GetPrinterDC());
// 获取打印选项
DOCINFO di;
ZeroMemory(&di, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = _T("My Document");
di.lpszOutput = NULL;
if (dc.StartDoc(&di) != SP_ERROR)
{
dc.StartPage();
// 进行打印操作
dc.EndPage();
dc.EndDoc();
}
dc.Detach();
}
}
```
在“打印预览”按钮的响应函数中,创建一个CPreviewView对象,并调用其DoModal函数显示打印预览对话框。用户选择打印选项后,可以在预览窗口中查看打印内容。
示例代码:
```
void CMyDialog::OnPreview()
{
CPrintDialog printDlg(FALSE);
CPreviewView preview;
if (printDlg.DoModal() == IDOK)
{
CDC dc;
dc.Attach(printDlg.GetPrinterDC());
// 获取打印选项
DOCINFO di;
ZeroMemory(&di, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = _T("My Document");
di.lpszOutput = NULL;
if (dc.StartDoc(&di) != SP_ERROR)
{
dc.StartPage();
// 进行打印操作
dc.EndPage();
dc.EndDoc();
}
dc.Detach();
// 显示打印预览窗口
preview.DoModal();
}
}
```
注意,以上示例代码仅为演示用途,实际使用中需要根据具体需求进行修改。同时,需要注意打印和打印预览的操作需要在另一个线程中进行,以避免对UI线程的阻塞。
阅读全文