Mfc “打印预览”对话框中的“打印”按钮不显示';行不通
按下“打印预览”对话框中的“打印”按钮后,将不会显示任何内容。 我认为在按下打印预览对话框中的打印按钮后,打印对话框应该会出现,但它没有。 它只是回到主屏幕 附言 这不是我开始项目时已经完成的功能。 我手动添加了此函数,因为我使用了另一个从CScrollView派生的视图,而未使用原始视图(CMyView) 代码如下:Mfc “打印预览”对话框中的“打印”按钮不显示';行不通,mfc,Mfc,按下“打印预览”对话框中的“打印”按钮后,将不会显示任何内容。 我认为在按下打印预览对话框中的打印按钮后,打印对话框应该会出现,但它没有。 它只是回到主屏幕 附言 这不是我开始项目时已经完成的功能。 我手动添加了此函数,因为我使用了另一个从CScrollView派生的视图,而未使用原始视图(CMyView) 代码如下: void SignalView::OnFilePrintPreview() { PRINTDLG printDlg = { 0 }; printDlg.lStru
void SignalView::OnFilePrintPreview()
{
PRINTDLG printDlg = { 0 };
printDlg.lStructSize = sizeof(PRINTDLG);
if (AfxGetApp()->GetPrinterDeviceDefaults(&printDlg))
{
if (printDlg.hDevMode)
{
DEVMODE *dm = (DEVMODE*)::GlobalLock(printDlg.hDevMode);
if (dm)
{
dm->dmFields |= DM_ORIENTATION;
dm->dmOrientation = DMORIENT_LANDSCAPE;
::GlobalUnlock(printDlg.hDevMode);
}
}
}
CScrollView::OnFilePrintPreview();
}
BOOL SignalView::OnPreparePrinting(CPrintInfo* pInfo)
{
__try {
pInfo->SetMinPage(1);
pInfo->SetMaxPage(1);
// pInfo->m_bPreview = TRUE;
return DoPreparePrinting(pInfo);
}__except (GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION){
AfxMessageBox(_T("Printer Error!"));
return FALSE; // Fail!
}
}
void SignalView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
}
void SignalView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
}
有什么我遗漏的吗?也许你的消息映射中没有
OnFilePrint
。但这很难说,因为您还没有展示很多代码。将CView
更改为CScrollView
不会在此处产生任何问题。您还可以尝试以下操作:创建一个基于CScrollView的测试应用程序,并从中获取打印和打印预览处理程序,并使用适当的代码将它们映射到您的应用程序上。非常感谢您的评论。我将OnFilePrint消息映射放在命令(ID\u FILE\u PRINT,&CScrollView::OnFilePrint)上,它现在运行得非常好。