Поиск:

Ответ в темуСоздание новой темы Создание опроса
> печать HTML-файла 
:(
    Опции темы
Ваня
Дата 14.12.2004, 19:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите, пожалуйста, как мне программным образом на C++ отправить на печать HTML-файл (не функция ShellExecute), надо, чтобы не выскакивал print-диалог (слышал - надо использовать ActiveX). Заранее спасибо.
  Вверх
mr.DUDA
Дата 14.12.2004, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



1) создать ActiveX-окно IWebBrowser (как именно - есть темка в C++ FAQ, про работу с ActiveX/COM компонентами)
2) с пом. метода Navigate2, загрузить HTML по url-адресу
3) вызвать метод (не помню, какое там у него имя smile) для распечатки.

Или же можно просто отправить окну сообщение WM_PRINT.


--------------------
user posted image
PM MAIL WWW   Вверх
Ваня
Дата 15.12.2004, 00:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Будет ли при этом показываться какое-либо окно? (хотелось бы, чтобы вообще ничего не выскакивало, т.к. необходима автомитическая печать большого количества страниц)
  Вверх
SeregaLBN
Дата 27.10.2005, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.10.2003
Где: Киев

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



Код

// печать документа
void nsPrint::PrintHTMLDocument(IHTMLDocument2 *pDoc2)
{
   USES_CONVERSION;
   //m_Browser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL ); // печать всего документа
   if (pDoc2 != NULL)
   {
      pDoc2->AddRef();
      IOleCommandTarget *pTarget = NULL;
      // the control will handle all printing UI
      HRESULT hRes = pDoc2->QueryInterface(IID_PPV_ARG(IOleCommandTarget, &pTarget));
      if (FAILED(hRes) || !pTarget) {
         //LOG_PUT(g_pLog, PutHResult, LL_ERROR), _T("  nsPrint::PrintHTMLDocument: pDoc2->QueryInterface(IOleCommandTarget): "), hRes);
      } else {
         //hRes = pTarget->Exec(NULL, OLECMDID_PAGESETUP,  OLECMDEXECOPT_DODEFAULT, NULL, NULL);

         USES_CONVERSION;

         BOOL bPreview   = FALSE;//CProjOption::CInterface::CPrint::Preview();
         BOOL bPromtUser = FALSE;//CProjOption::CInterface::CPrint::PromtUser();

         ////////////////////////////////////////////////////////////
         CString strTemplate = _T("");//nsPrint::CreateTemplate(pDoc2);

         VARIANT varValue; ::VariantInit(&varValue);
         if (!strTemplate.IsEmpty()) {
            V_VT(&varValue) = VT_BSTR;
            V_BSTR(&varValue) = ::SysAllocString(T2COLE(strTemplate));
         }
         VARIANT varBRes; ::VariantInit(&varBRes); V_VT(&varBRes) = VT_BOOL; V_BOOL(&varBRes) = FALSE;
         hRes = pTarget->Exec(
            NULL,
            bPreview ? OLECMDID_PRINTPREVIEW :
                       OLECMDID_PRINT,
            bPreview ? 0 : (bPromtUser ? OLECMDEXECOPT_DODEFAULT :
                                         OLECMDEXECOPT_DONTPROMPTUSER),
            strTemplate.IsEmpty() ? NULL : &varValue,
            NULL//&varBRes//
         );
         if (FAILED(hRes)) {
            //LOG_PUT(g_pLog, PutHResult, LL_ERROR), _T("  nsPrint::PrintHTMLDocument: pTarget->Exec: "), hRes);
         } else {
            //if (varBRes == VARIANT_FALSE) {
            //   LOG_PUT(g_pLog, Put, LL_ERROR), _T("CTerminalView::PrintHTMLDocument: pTarget->Exec(OLECMDID_PRINT): return VARIANT_FALSE "));
            //}
         }
         ::VariantClear(&varBRes);
         ::VariantClear(&varValue);
      }
      pDoc2->Release();
   }
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




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


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

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