【问题标题】:How to disable Print to File option while printing in C++如何在 C++ 中打印时禁用“打印到文件”选项
【发布时间】:2022-10-19 02:48:10
【问题描述】:

我正在将 PRINTDLG 库用于旧的 Windows 应用程序,它必须打印一些文件。我将其配置为选择默认打印机并打印文档而不显示任何对话框。但是问题是当没有打印机并且默认打印机设置为保存到文件时,它会显示一个弹出窗口来保存文件并且应用程序最小化,这不应该发生。所以我想禁用打印到文件功能。我试图设置标志以禁用打印到文件,但它不起作用..任何人都知道解决方案或禁用系统弹出窗口的方法。 这是示例代码:

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);
}

【问题讨论】:

标签: c++ visual-studio visual-c++ printers


【解决方案1】:

我当然希望你现在已经想通了,这样做是为了不执行代码:

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

if (bRet)
{

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多