Здравствуйте, люди добрыя!
Столкнулся вот с чем:
описываю всё по порядку
создаем проект 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. Помогите побороть сей недуг.
Помогите пожалуйста, очень надо!!!
Если мне память не изменяет, там надо запросить интерфейс 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);
Здравствуйте, Conductor
C>C>m_pWBrowser2->ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, &vtTemplatePath, NULL);
C>
Спасибо, но есть одно "НО". При OLECMDID_PRINTPREVIEW, превьюшка нормально появляется, как и надо по шаблону, а вот на печать документ не уходит (OLECMDID_PRINT). То есть вообще тишина.
А с шаблоном все в порядке? Ведь в нем может быть реализован preview, но не реализован print.
Здравствуйте, Conductor, Вы писали:
C>А с шаблоном все в порядке? Ведь в нем может быть реализован preview, но не реализован print.
УРРРАААА!!!! Огромное спасибо. Действительно шаблон не доделал.

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