Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с CPageSetupDialog и Cancel

433
17 мая 2007 года
AlexII
86 / / 13.10.2003
Проблема заключаеться в следующем:
Нажимаю на кнопку появляется диалог - СPageSetupDialog. В диалоге меняю к примеру размер бумажного листа с А4 на С5 и нажимаю на кнопку Ok. Опять вызываю этот же диалог и вижу, что текущий размер бумаги поменялся. Далее в диалоге опять беру меняю тип бумаги с С5 на A4 и на этот раз нажимаю уже кнопку Cancel. В результате нажатия на кнопку Cancel текущий размер бумаги всё равно меняеться!
Кто нибудь знает как эту фигню побороть :-) ?

Вот код который использовал:

INT_PTR nRetCode;
PRINTDLG PrintDlg;

if(AfxGetApp()->GetPrinterDeviceDefaults(&PrintDlg))
{
CPageSetupDialog psd(PSD_MARGINS|PSD_DEFAULTMINMARGINS|
PSD_INTHOUSANDTHSOFINCHES,this);

psd.m_psd.hDevMode =PrintDlg.hDevMode;
psd.m_psd.hDevNames=PrintDlg.hDevNames;

nRetCode=psd.DoModal();

if(nRetCode==IDOK)
AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames,
psd.m_psd.hDevMode);
}
29K
17 мая 2007 года
Doryahn
1 / / 17.05.2007
По ходу CPageSetupDialog еще один глюкнутый врапер :)

Можешь попробовать использовать напрямик функцию PageSetupDlg (которую кстати CPageSetupDialog и использует). Вот пример:

PAGESETUPDLG psd;
HWND hwnd;
PRINTDLG PrintDlg;

AfxGetApp()->GetPrinterDeviceDefaults(&PrintDlg);

ZeroMemory(&psd, sizeof(psd));
psd.lStructSize = sizeof(psd);
psd.hwndOwner = GetSafeHwnd();
psd.hDevMode = PrintDlg.hDevMode;
psd.hDevNames = PrintDlg.hDevNames;
psd.Flags = PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS | PSD_DEFAULTMINMARGINS;

if (PageSetupDlg(&psd)==TRUE)
AfxGetApp()->SelectPrinter(psd.hDevNames,psd.hDevMode);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог