gpt4 book ai didi

c++ - 添加对在基于对话框的 MFC 应用程序中打印和预览 HTML 的支持

转载 作者:可可西里 更新时间:2023-11-01 10:37:12 26 4
gpt4 key购买 nike

我有一个分为两部分的问题。我需要向现有的基于对话框的 MFC 项目添加打印支持。正在打印的文档是使用 HTML 编写的。我知道我可以添加基于 HTML 的对话框,但是如何添加打印功能呢?

附言。我需要它能够根据程序的需要设置打印页面大小。

最佳答案

灵感来自 excellent Marc's Durdin's article ,我做了更多的洞穴探险。实际上似乎有一种更简单的方法来提供自定义 DEVMODEDEVNAMES并在不使用 HTML 对话框或自定义 IE print template 的情况下打印.反过来,应该允许设置自定义打印机、纸张尺寸、方向等。

我有一个用 C++ 编写的 Playground WebBrowser ActiveX 宿主项目,类似于 this .我实现 IOleCommandTarget我的 OLE 站点对象 ( IOleClientSite ) 上的界面。现在这是有趣的部分,当调用打印时(通过 Ctrl-P 或通过 IDM_PRINT ),浏览器控件将站点对象回调为 IOleCommandTarget::Exec(&CGID_DocHostCommandHandler, OLECMDID_PRINT2, &VARIANT(VT_UNKNOWN), NULL)。 .第三个参数包含一个作为 IUnknown 传递的对象, 但在查询 IDispatch 时它支持所有相同的 __IE_* properties , 可通过 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)

我还没有更进一步,但我认为应该可以改变它们中的任何一个并返回 S_OK来自 IOleCommandTarget::Exec ,并期望浏览器控件接受更改。

我希望它以类似的方式为 IDM_PRINTPREVIEW 工作/OLECMDID_PRINTPREVIEW2 ,但我还没有证实这一点。如果时间允许,我会多玩这个。同时,欢迎您试用并分享您的结果。

关于c++ - 添加对在基于对话框的 MFC 应用程序中打印和预览 HTML 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com