Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 添加对打印和打印的支持;在基于对话框的MFC应用程序中预览HTML_C++_Windows_Winapi_Printing_Mfc - Fatal编程技术网

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

C++ 添加对打印和打印的支持;在基于对话框的MFC应用程序中预览HTML,c++,windows,winapi,printing,mfc,C++,Windows,Winapi,Printing,Mfc,我有一个由两部分组成的问题。我需要添加支持打印到现有的基于对话框的MFC项目。正在打印的文档是使用HTML编写的。我知道我可以添加基于HTML的对话框,但如何添加打印功能 另外,我需要它来根据程序的需要设置打印页面的大小。受的启发,我做了更多的探索。 实际上,似乎有一种更简单的方法可以提供自定义的DEVMODE和DEVNAMES并在不使用HTML对话框或自定义文件的情况下进行打印。这反过来应该允许设置自定义打印机、纸张大小、方向等 我有一个C++的游戏者网页浏览器ActiveX主机项目,类似于。

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

另外,我需要它来根据程序的需要设置打印页面的大小。

受的启发,我做了更多的探索。 实际上,似乎有一种更简单的方法可以提供自定义的
DEVMODE
DEVNAMES
并在不使用HTML对话框或自定义文件的情况下进行打印。这反过来应该允许设置自定义打印机、纸张大小、方向等

<>我有一个C++的游戏者网页浏览器ActiveX主机项目,类似于。我在我的OLE站点对象(
IOleClientSite
)上实现
IOleCommandTarget
接口。现在有一个有趣的部分,当调用打印时(通过Ctrl-P或via),浏览器控件以
IOleCommandTarget::Exec(&CGID\u DocHostCommandHandler,oclemdid\u PRINT2,&VARIANT(VT\u UNKNOWN),NULL)
的形式调用站点对象。第三个参数包含一个作为
IUnknown
传递的对象,但当查询
IDispatch
时,它支持所有相同的功能,可通过
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
,并期望浏览器控件接受这些更改


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

也许告诉我们您尝试了什么以及出现了什么问题是一个很好的起点?@EdHeal:我能够找到如何向基于视图的MFC应用程序添加打印和打印视图支持,但我不知道如何将其移植到基于对话框的应用程序。为什么不发布代码可能是一个很好的起点。@noserio:非常好。谢谢我现在需要从德尔福解密它。。。老兄,这是一种难听的语言:)再次谢谢你。我需要继续阅读你链接到的那些文章,我会发布更新…快速跟进。我正在努力寻找一个C++示例,它可以说明如何使用IE打印模板。这篇文章有很多口头信息,但没有源代码:我遗漏了什么吗?MSDN文章包含了。里面有一个应用程序,它有[Template Source]按钮来显示样本打印模板源。他们没有提供C++源。我发现了。不幸的是,它太模糊了,没有一个C++代码。我开始研究它是因为
printtemplates.exe
应用程序本身似乎无法在我的IE10 Windows 8桌面上打印任何东西。因此,我现在正在研究使用Win32直接打印到DeviceContext:您对这种方法有何看法?使用DC是经典的,但我不确定它在这方面有何帮助。曾经有过,但由于微软已经用IE9实现了GPU渲染,它被弃用(并且崩溃了)。