簡體   English   中英

在基於對話框的MFC應用程序中添加對打印和預覽HTML的支持

[英]Add support to print & preview HTML in a dialog-based MFC app

我有一個兩部分的問題。 我需要在現有的基於對話框的MFC項目中添加對打印的支持。 要打印的文檔是使用HTML編寫的。 我知道我可以添加基於HTML的對話框,但是如何為它添加打印功能?

PS。 我需要它能夠根據程序的需要設置打印頁面的大小。

受到Marc Durdin 出色文章的啟發,我做了一些進一步的研究。 實際上,似乎提供了一種自定義DEVMODEDEVNAMES並進行打印而不使用HTML對話框或自定義IE打印模板的簡便方法。 反過來,這應該允許設置自定義打印機,紙張尺寸,方向等。

我有一個C ++的Playground WebBrowser ActiveX宿主項目,與類似。 我在OLE站點對象( IOleClientSite )上實現IOleCommandTarget接口。 現在,這是有趣的部分,當調用打印(通過Ctrl-P或通過IDM_PRINT )時,瀏覽器控件將站點對象作為IOleCommandTarget::Exec(&CGID_DocHostCommandHandler, OLECMDID_PRINT2, &VARIANT(VT_UNKNOWN), NULL) 第三個參數包含一個作為IUnknown傳遞的對象,但是當查詢IDispatch它支持所有相同的__IE_*屬性 ,可通過IDispatch::Invoke

__IE_TemplateUrl (VT_EMPTY)
__IE_ParentHWND (VT_UINT)
__IE_HeaderString (VT_BSTR)
__IE_FooterString (VT_BSTR)
__IE_OutlookHeader (VT_UNKNOWN)
__IE_BaseLineScale (VT_INT)
__IE_uPrintFlags (VT_UINT)
__IE_ContentDocumentUrl (VT_BSTR)
__IE_ContentSelectionUrl (VT_BSTR)
__IE_PrinterCMD_Printer (VT_BSTR)
__IE_PrinterCMD_Device (VT_BSTR)
__IE_PrinterCMD_Port (VT_BSTR)
__IE_BrowseDocument (VT_UNKNOWN)
__IE_TemporaryFiles (VT_ARRAY)
__IE_PrinterCMD_DevNames (VT_I4)
__IE_PrinterCMD_DevMode (VT_I4)
__IE_PrintType (VT_BSTR)

我還沒有進一步講解,但是我認為應該可以改變其中的任何一個,並從IOleCommandTarget::Exec返回S_OK ,並希望瀏覽器控件接受這些更改。

我希望IDM_PRINTPREVIEW / OLECMDID_PRINTPREVIEW2能夠以類似的方式工作,但我尚未對此進行驗證。 在時間允許的情況下,我將對此進行更多介紹。 同時,我們歡迎您嘗試一下並分享您的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM