Здравствуйте, DBnew, Вы писали:
DB> CPrintDialog dlg(FALSE,PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION);
DB> if (dlg.GetDefaults()) {
DB> ASSERT(dlg.m_pd.hDC != NULL);
DB> // Вот здесь устанавливаю 2-е копии
DB> dlg.m_pd.nCopies = 2;
То что ты здесь устанавливаешь имеет смысл только лишь до вызова DoModal или GetDefaults, т.е собственно до вызова
PrintDlg, ибо CPrintDialog по сути лишь обертка над этой апишной ф-ей. В данном случае у тебя получается примерно следующее —
PRINGDLG pd;
pd.Flags = PD_RETURNDC | PD_RETURNDEFAULT;
PrintDlg(&pd);
pd.nCopies = 2; //не имеет смысда ибо в этой точке DEVMODE уже сформирован
А вот далее, для установки ориентации, ты все делаешь правильно (почти, ибо я не увидел у тебя установку поля dmFields которое указывает системе какое поле структуры DEVMODE имеет смысл, а какое нет), только нужно пойти чуть дальше, и этим же способом установить кол-во копий уже в DEVMODE:
pDevMode->dmFields |= DM_COPIES;
pDevMode->dmCopies = 2;