Я использую C ++ и обычные вызовы Winapi для отображения диалогового окна «Печать», и он отлично работает. Однако диалоговое окно, которое я получаю, показывает старые значки принтера по сравнению с аналогичными диалоговыми окнами печати, созданными другим программным обеспечением. Интересно, почему.
Кто-нибудь знает, как отображать новые значки принтера, как это делает MSV C dialog
Большое спасибо.
Вот как я показываю Диалог печати в моем приложении:
// 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 V C диалогового окна 2.
MS V C Диалог печати с современными иконками