好像用CHtmlView可以打印的,但我现在做的东西不想用MFC……
大虾帮忙,有什么办法吗?

解决方案 »

  1.   

    昨天查了一整天,人们大多用的是COM组件……
    照猫画虎试了好多次,终于能印刷了“打印对话框”总是出来,大虾们真的没遇到过同样的事情么?我的代码:CComPtr<IWebBrowser2> pWebApp;  // COM指针IE接口
    HRESULT hr = pWebApp.CoCreateInstance(CLSID_InternetExplorer); // 初始化
    pWebApp->put_Visible ( VARIANT_FALSE ); // 把IE藏起来CComVariant vempty, vUrl("E:\\0402250005.htm");
    pWebApp->Navigate2 ( &vUrl, &vempty, &vempty, &vempty, &vempty ); // 打开一个网页VARIANT_BOOL pBusy;
    do{
    pWebApp->get_Busy(&pBusy);
    Sleep(1);
    }while(pBusy==VARIANT_TRUE);// 等IE忙完了的hr = pWebApp->ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER,&vempty,&vempty);//打印Sleep(2000);                    // 等待打印完事儿
    pWebApp->quit;                  // 把IE关了
    pWebApp.Release();              // 照猫画虎不知道为什么……管它呢总在ExecWB的地方出现对话框,烦死了……人家说OLECMDEXECOPT_DONTPROMPTUSER的意思是不出现对话框,但我怎么试都出现,哪位大虾纸点弥金啊另外下面的办法也试了:
    LPDISPATCH m_pDispatch = NULL; 
    hr = pWebApp->get_Document(&m_pDispatch); IOleCommandTarget* pCmdTarg;
    hr = m_pDispatch->QueryInterface(IID_IOleCommandTarget, (void**)&pCmdTarg);
    hr = pCmdTarg->Exec(NULL,OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER,NULL,NULL);一样会出现对话框……啊,忘了说:我是在windows service的atl程序里调用的以上处理(不知道有没有关系)