Visual Studio 如何在C++中打印时禁用“打印到文件”选项

2mbi3lxu  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(242)

我正在使用PRINTDLG库为一个旧的windows应用程序,这必须打印一些文件。我配置它的方式,它拿起默认打印机和打印文档,而不显示任何对话框。但问题是,当没有打印机和默认打印机设置为保存到文件,它显示一个弹出保存文件和应用程序最小化,这是不应该发生的。2所以我想禁用打印到文件功能。3我试图设置标记来禁用打印到文件,但是它不起作用。4任何人都知道解决方案或禁用系统弹出窗口的方法。5下面是示例代码:

PRINTDLG pd;

memset(&pd, 0, sizeof(pd));

pd.lStructSize = sizeof(pd);
// Disable print to file flag
pd.Flags = PD_RETURNDEFAULT | PD_RETURNIC | PD_DISABLEPRINTTOFILE;
if (!PrintDlg(&pd))
{
    MessageBox(NULL, _T("No printer found"), _T("Printer Error!"), MB_OK);
}
else
{

    DOCINFO di;
    memset(&di, 0, sizeof(di));
    di.cbSize = sizeof(di);
    StartDoc(pd.hDC, &di);
    StartPage(pd.hDC);

    
    // Drawing code begin
    //    
    RECT rc;
    rc.top = 100;
    rc.left = 100;
    rc.bottom = 300;
    rc.right = 300;

    HBRUSH greenBrush = CreateSolidBrush(RGB(0, 255, 0));
    FillRect(pd.hDC, &rc, greenBrush);
    DeleteObject(greenBrush);
    //
    // Drawing code end

    EndPage(pd.hDC);
    EndDoc(pd.hDC);
    DeleteObject(pd.hDC);
}
wgeznvg7

wgeznvg71#

我当然希望您现在已经明白了这一点,只是这样做是为了不执行代码:

BOOL bRet = m_pAppPtr->GetPrinterDeviceDefaults(&pd);

if (bRet)
{

相关问题