Мне поручено решить следующую проблему: мое приложение аварийно завершает работу при запуске на 64-разрядной машине, когда вызывается функция PrintDlg () .
После рытья и выдергивания волос я решил, что лучшее решение - заменить исходные вызовы PrintDlg () его старшим братом, PrintDlgEx () .
Это исправляет одну проблему (она больше не падает!), Но вызывает другую. Когда я выполняю код, это , а не , показывающий диалог печати, просто возвращающий код успеха и выдающий мне всю информацию для моего принтера по умолчанию. Мне нужна эта функция, чтобы показать стандартное окно «Настройка печати», я не знаю, как это сделать. Ниже показаны примеры значений, которые я пытаюсь использовать для отображения моего диалога.
Есть мысли? Заранее спасибо.
// Initialize the PRINTDLGEX structure.
pd2.lStructSize = sizeof(PRINTDLGEX);
pd2.hwndOwner = wnddata->wnd.hnd;
pd2.hDevMode = NULL;
pd2.hDevNames = NULL;
pd2.hDC = NULL;
pd2.Flags = PD_RETURNDC | PD_COLLATE;
pd2.Flags2 = 0;
pd2.ExclusionFlags = 0;
pd2.nPageRanges = 0;
pd2.nMaxPageRanges = 10;
pd2.lpPageRanges = NULL;
pd2.nMinPage = 1;
pd2.nMaxPage = 1000;
pd2.nCopies = 1;
pd2.hInstance = 0;
pd2.lpPrintTemplateName = NULL;
pd2.lpCallback = NULL;
pd2.nPropertyPages = 0;
pd2.lphPropertyPages = NULL;
pd2.nStartPage = START_PAGE_GENERAL;
pd2.dwResultAction = 0;
pdrc = PrintDlgEx (&pd2);