首页 > 解决方案 > 打印对话框中的打印机图标

问题描述

我正在使用 C++ 和普通的 Winapi 调用来显示打印对话框,它工作正常。但是,与其他软件生成的类似打印对话框相比,我得到的对话框显示了旧的打印机图标。我想知道为什么。

有谁知道如何像 MSVC 对话框一样显示新的打印机图标

非常感谢。

以下是我在应用程序中显示打印对话框的方式:

// Initialize the PRINTDLGEX structure
PRINTDLGEX  PrnDlgEx ;

PrnDlgEx.lStructSize = sizeof (PRINTDLGEX) ;
PrnDlgEx.hwndOwner = hwnd ;
PrnDlgEx.hDevMode  = NULL ;
PrnDlgEx.hDevNames = NULL ;
PrnDlgEx.hDC = NULL ;
PrnDlgEx.Flags = PD_HIDEPRINTTOFILE | PD_NOCURRENTPAGE | PD_NOPAGENUMS |
                 PD_NOSELECTION | PD_USEDEVMODECOPIESANDCOLLATE ;
PrnDlgEx.Flags2 = 0 ;
PrnDlgEx.ExclusionFlags = 0 ;
PrnDlgEx.nPageRanges = 0 ;
PrnDlgEx.nMaxPageRanges = 0 ;
PrnDlgEx.lpPageRanges = nullptr ;
PrnDlgEx.nMinPage = 1 ;
PrnDlgEx.nMaxPage = 0xFFFF ;
PrnDlgEx.nCopies  = 1 ;
PrnDlgEx.hInstance = NULL ;
PrnDlgEx.lpPrintTemplateName = NULL ;
PrnDlgEx.lpCallback = NULL ;
PrnDlgEx.nPropertyPages = 0 ;
PrnDlgEx.lphPropertyPages = NULL ;
PrnDlgEx.nStartPage = START_PAGE_GENERAL ;
PrnDlgEx.dwResultAction = 0 ;

HRESULT Result = PrintDlgEx (&PrnDlgEx) ;

下面是我的打印对话框 1 和 MS VC 对话框 2 的屏幕截图。

带有旧图标的“我的打印”对话框

带有现代图标的 MS VC 打印对话框

标签: winapiprintingdialog

解决方案


根据自定义打印对话框。您可以通过修改 Prnsetup.dlg 文件中指定的默认模板来创建自定义模板。默认打印对话框模板中使用的控件标识符在 Dlgs.h 文件中定义。

然后使用PRINTDLG结构来启用模板。


推荐阅读