Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MyPrintDialog, Организация печати для CView 
:(
    Опции темы
Proletariy
Дата 26.3.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Есть приложение SDI от CSCrollView.

Пытаюсь организовать свое диалоговое окно печати путем изменения стандартного окна печати. В своем окне хочу задавать область печати m_rectDraw..... и еще кое какие мелочи.

http://www.sources.ru/msdn/howto/q132909.shtml
http://www.codeproject.com/KB/printing/cus...x?display=Print  (с работоспособным примером)
Внес в проект изменения согласно вышеуказанным ссылкам и могу теперь добовлять элементы управления к стандартному окну печати.


Но не могу разобраться со следующими проблемами. 

1.На перегруженном диалоговом окне печати не могу организовать нормальное взаимодействие между элементами управления Combo Box, Edit Box и др. (не присваиваются переменные элементам управления, только события )

2.Как организовать взаимодействие функций класса представления, отвечающих за печать/предпросмотр с классом CMyPrintDialog
(скорее всего через указатель на класс представления из класса CMyPrintDialog)???

 smile 

Возможно Вы имеете некоторый опыт создания собственного диалога вывода на печать.
Заранее спасибо за ответ.


Это сообщение отредактировал(а) Proletariy - 26.3.2009, 13:04
PM MAIL   Вверх
Proletariy
Дата 31.3.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Пошел немного другой дорогой.

Создал собственный диалог вывода на печать.
На примере 
http://www.codeproject.com/KB/printing/pri...isplay=PrintAll

Пока больших затруднений нет, но появился вопрос. Не бейте ногами)) На форме диалога хочу поставить кнопку предварительного просмотра. Но если я задаю идентификатор кнопки ID_FILE_PRINT_PREVIEW отображается окно предварительного просмотра с которым нельзя работать - висит.  smile 
Если пишу обработчик события кнопки:
OnOK();
SendMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);
Предпросмотр работает, но при его запуске закрывается окно диалога.

Как корректно вызвать окно предпросмотра с любого произвольного диалога??? Чтобы при этом модальное диалоговое окно не закрывать.


Это сообщение отредактировал(а) Proletariy - 31.3.2009, 15:26
PM MAIL   Вверх
voov
Дата 31.3.2009, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



Цитата(Proletariy @  31.3.2009,  14:43 Найти цитируемый пост)
Если пишу обработчик события кнопки:
OnOK();
SendMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);
Предпросмотр работает, но при его запуске закрывается окно диалога.

Как корректно вызвать окно предпросмотра с любого произвольного диалога??? Чтобы при этом модальное диалоговое окно не закрывать.

Не делай вызов OnOK();
PM MAIL   Вверх
Proletariy
Дата 31.3.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



voov
Спасибо за ответ.
Да я бы и рад не вызывать OnOK)) Но в таком случае виснет окно предпросмотра.
Если просто писать на событие (событие в классе представления)
SendMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);

Буду завтра опять копать.

Думаю попробовать так - одновременно с 
OnOK();
SendMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);
передавать в класс представления метку BOOL и в зависимости от ее значения по завершении предпросмотра в какой нибудь функции (напр. в цикле OnPrepereDC)  или в OnEndPrinting вызывать заново модальное окно диалога печати.


Это сообщение отредактировал(а) Proletariy - 31.3.2009, 18:52
PM MAIL   Вверх
Proletariy
Дата 28.4.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Подниму тему.

Получилось организовать предварительный просмотр из модального диалога, но как-то очень коряво.



При нажатии кнопки "Предпросмотр" на диалоге ставлю флаг m_PrintDialogStatus=TRUE, что предпросмотр осуществляется из модального диалога, закрываю окно модального диалога OnOk() и посылаю сообщение SendMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);

По завершении предпросмотра в циклической функции OnDraw ставлю условие, при выполнении которого модальный диалог вызывается сново 1 раз. Примерно так.
if((m_PrintDialogStatus == true)&(pDC->IsPrinting() == FALSE))
{
m_PrintDialogStatus = false; //Обнуляю флаг
CMyPrintDialog dlg;
dlg.DoModal();
}

Подскажите, можно ли как то сделать это по другому? Более просто.
Может предпросмотр осуществлять в новом окне? Либо что-то сделать с модальным диалогом, чтобы он не мешал??


///////////////////////////////////////////
Только дописал сообщение и нашел ответ
Код


void CProgramView::OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point, CPreviewView* pView)
{
CScrollView::OnEndPrintPreview(pDC, pInfo, point, pView);

CMyPrintDialog dlg;
dlg.DoModal();
}

///////////////////////////////////////////

Но эти вопросы остались->
1. Есть ли возможность убрать/сделать неактивной кнопку Print... в стандартном окне предпросмотра.
2. Убрать крестик закрытия стандартного окна предпросмотра, чтобы выход из режима предпросмотра осуществлялся только нажатием кнопки Close...

С ув.


Это сообщение отредактировал(а) Proletariy - 28.4.2009, 15:39
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.