И все-таки: альбомная ориентация при печати :(
От: SamiZnaeteKto  
Дата: 13.02.03 14:28
Оценка:
Доброе время суток
Перечитал уже весь форум по этому вопросу, но ответа так и не нашел
Необходимо по умолчанию установить альбомную ориентацию страницы для Print Preview и для собственно печати.
Суть ответов сводится к следующему:
1)
BOOL CMyView::OnPreparePrinting(CPrintInfo* print_info)
{
PRINTDLG pd = { 0 };
pd.lStructSize = sizeof(pd);
pd.Flags = 0;//PSD_RETURNDEFAULT | PSD_NOWARNING;
if(PrintDlg(&pd)) {
DEVMODE* dm = reinterpret_cast<DEVMODE*>(GlobalLock(pd.hDevMode));
if(dm)
{
dm->dmFields = DM_ORIENTATION;
dm->dmOrientation = DMORIENT_LANDSCAPE;
GlobalUnlock(pd.hDevMode);
}
print_info->m_pPD->m_pd.hDevMode = pd.hDevMode;
print_info->m_pPD->m_pd.hDevNames = pd.hDevNames;
if (!print_info->m_pPD->CreatePrinterDC())
return FALSE;

}
else
return FALSE;
return TRUE;
}
немного не То, поскольку перед Preview вызывает диалог выбора принтера, после чего Preview отобрадает все корректно, но если в Preview нажать печать, то опять нужно выбирать принтер Вот если бы певый диалог не появлялся....

2)
CMyView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
LPDEVMODE lpDev = pInfo->m_pPD->GetDevMode();
lpDev->dmOrientation = DMORIENT_LANDSCAPE;
}
Тут тоже не без проблем: при первом вызове ориентация-то остается книжная, но если Preview закрыть и тут же вызвать еще раз, то ориентация уже альбомная Так почему же сразу не работает???

3)
Предлагают вставлять различный код в CMyApp Или CMyDoc. Но это не подходит, поскольку у приложения несколько видов и каждый печатает по-своему

Если есть какие идеи — буду очень рад выслушать
Заранее благодарю
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.