unable to to set paper size in printer properties
C / C++ / MFC
1
Posts
1
Posters
18
Views
-
void CMFCApplication2Dlg::TestFinal()
{
CPrintDialogEx dlg;CString strPrinterName = _T("Microsoft Print to PDF"); const WORD nPaperA4 = DMPAPER_A4; // Preserve old default printer TCHAR szOldDefault[256] = { 0 }; DWORD dwSize = _countof(szOldDefault); if (!::GetDefaultPrinter(szOldDefault, &dwSize)) szOldDefault[0] = '\0'; CString strOldDefault = szOldDefault; // Set target printer temporarily ::SetDefaultPrinter(strPrinterName); // Get DEVMODE / DEVNAMES CPrintDialog tempDlg(FALSE); if (!tempDlg.GetDefaults()) goto RestoreDefault; dlg.m_pdex.hDevMode = tempDlg.m_pd.hDevMode; dlg.m_pdex.hDevNames = tempDlg.m_pd.hDevNames; tempDlg.m_pd.hDevMode = NULL; tempDlg.m_pd.hDevNames = NULL; // Set default paper to A4 DEVMODE* pDevMode = (DEVMODE*)::GlobalLock(dlg.m_pdex.hDevMode); if (pDevMode) { pDevMode->dmFields |= DM_PAPERSIZE; pDevMode->dmPaperSize = nPaperA4; ::GlobalUnlock(dlg.m_pdex.hDevMode); } dlg.DoModal();
RestoreDefault:
if (!strOldDefault.IsEmpty())
::SetDefaultPrinter(strOldDefault);
}hi All,
unable to to set paper size in printer properties UI windows print. can you please help me for the same