Обозреватель веб-сайтов и шаблоны принтера
От: Brother_Warrior Россия  
Дата: 27.09.05 14:55
Оценка:
Здравствуйте, люди добрыя!

Столкнулся вот с чем:
описываю всё по порядку
создаем проект MFCAplication в VisualStudio, в качестве класса для View используем CFormView
далее в дизайнере кидаем на форму ActiveX-компонент Обозреватель веб-страниц (Microsoft)
После этого содаем перменную связывающую тот самый компонент с нашим диалогом, напрмер m_wndExplorer
где-нибудь перенапраляем наш експлорер на какую-нибудь страничку

m_wndExplorer.Navigate(...)



компилируем и запускаем... всё отлично, открылась в нашем мини-браузере страничка
дальше мы хотим распечатать сей шедевр (страничку), поступаем так

m_wndExplorer.ExecWB(OLECMDID_PRINT, 0, NULL, NULL);


страничка с радостью уходит на печать
далее читаем MSDN и узнаем, что можно подсунуть свой шаблон для печати (и предпросмотра), например что-нить особенное с оформлением сотворить, для чего его надо создать, а потом передать путь к нему в качестве 3-го параметра, смотрим так же пример MSDN, они советуют так:

VARIANT vtTemplatePath;
V_VT(&vtTemplatePath) = VT_BSTR;
V_BSTR(&vtTemplatePath) = SysAllocString(L"C:/template.html");


Отлично, делаем, как доктор прописал

VARIANT vtTemplatePath;
V_VT(&vtTemplatePath) = VT_BSTR;
V_BSTR(&vtTemplatePath) = SysAllocString(L"C:/template.html");
m_wndExplorer.ExecWB(OLECMDID_PRINT, 0, &vtTemplatePath, NULL);


И вот тут-то мы получаем следующий шедевр

First-chance exception at 0x793aa4e1 in Test1.exe: Microsoft C++ exception: COleDispatchException @ 0x0012f350.
Warning: Uncaught exception in WindowProc (returning 1).

Вот теперь сам вопрос, а как тогда быть??? Мне надо подсунуть ему шаблон и заставить его распечатать ТАК, КАК Я ХОЧУ, а не по-дефолту IE. Помогите побороть сей недуг.
Re: Обозреватель веб-сайтов и шаблоны принтера
От: Brother_Warrior Россия  
Дата: 29.09.05 12:04
Оценка:
Помогите пожалуйста, очень надо!!!
Re[2]: Обозреватель веб-сайтов и шаблоны принтера
От: Brother_Warrior Россия  
Дата: 03.10.05 12:23
Оценка:
Помогите пожалуйста, очень надо!!!
Re: Обозреватель веб-сайтов и шаблоны принтера
От: Conductor СССР  
Дата: 03.10.05 16:42
Оценка: 3 (1)
Если мне память не изменяет, там надо запросить интерфейс IWebBrowser2:

LPUNKNOWN lpUnknown = m_wndExplorer.GetControlUnknown();
IWebBrowser2 *m_pWBrowser2;
lpUnknown->QueryInterface(IID_IWebBrowser2, (void**) &m_pWBrowser2);


И потом уже вызывать:

m_pWBrowser2->ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, &vtTemplatePath, NULL);
Re[2]: Обозреватель веб-сайтов и шаблоны принтера
От: Brother_Warrior Россия  
Дата: 05.10.05 12:00
Оценка:
Здравствуйте, Conductor

C>
C>m_pWBrowser2->ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, &vtTemplatePath, NULL);
C>


Спасибо, но есть одно "НО". При OLECMDID_PRINTPREVIEW, превьюшка нормально появляется, как и надо по шаблону, а вот на печать документ не уходит (OLECMDID_PRINT). То есть вообще тишина.
Re[3]: Обозреватель веб-сайтов и шаблоны принтера
От: Conductor СССР  
Дата: 05.10.05 12:33
Оценка:
А диалог печати появляется? Принтер в системе установлен?
Re[4]: Обозреватель веб-сайтов и шаблоны принтера
От: Brother_Warrior Россия  
Дата: 06.10.05 09:04
Оценка:
Здравствуйте, Conductor, Вы писали:

C>А диалог печати появляется? Принтер в системе установлен?


Принтер естественно установлен, никаких диалогов не вылезает.
Когда делал напрямую вызов m_wndExplorer.ExecWB(), без шаблона своего, то тоже диалогов не было, но документ на печать уходил.
Re[5]: Обозреватель веб-сайтов и шаблоны принтера
От: Conductor СССР  
Дата: 06.10.05 09:51
Оценка: 3 (1)
А с шаблоном все в порядке? Ведь в нем может быть реализован preview, но не реализован print.
Re[6]: Обозреватель веб-сайтов и шаблоны принтера
От: Brother_Warrior Россия  
Дата: 06.10.05 12:24
Оценка:
Здравствуйте, Conductor, Вы писали:

C>А с шаблоном все в порядке? Ведь в нем может быть реализован preview, но не реализован print.


УРРРАААА!!!! Огромное спасибо. Действительно шаблон не доделал. Но, блин, догадаться, что для того, чтобы вызвать метод класса, надо через такую з@дницу пройти... Еще раз СПАСИБО за помощь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.