qt集成dsoframer.ocx打开office办公软件
最近一段时间真是事情太多了,前不久项目中一个嵌入office软件的问题,由于没有时间研究,且项目的需求是浏览word文档,偷了一个懒,把word文档转换成pdf文档,然后嵌入libcef浏览器给打开了
现在回过头来,重新研究了这方面的直接办法,在网上查了多方面的资料,终于决定要使用ocx这个方案来完成此项功能,可限于资源问题,ocx方面的资料 没怎么接触过,所以就盲目的在晚上看别人的东西,不过皇天不负有心人,最终还是让我成功的搞定了这个问题,然后觉着,这个ocx也不过如此么,总的来说说 还是比较简单
我当前机器环境:windwos7 64位 dsoframer 1.3 qt5.5.1 vs2013
下边我说下我自己的步骤:
1、下载dsoframer.ocx,然后使用命令注册regsvr32.exe dsoframer.ocx
2、运行regedit.exe 在HKEY_LOCAL_MACHINE目录下搜索dsoframer,获取CLSID的值,这个是用作ocx的唯一标示,如果没有搜索到,可以下载其他的dsoframer,重新注册,或者给我留言
3、接下来直接上代码
QAxWidget * _Word = new QAxWidget(this);
_Word->setControl("{00460182-9E5E-11d5-B7C8-B8269041DD57}");
_Word->setProperty("Visible", true);
QString filePath = QFileDialog::getOpenFileName(, "Open doc file", QString(), "*.doc");
if (filePath.isEmpty())
return;
_Word->dynamicCall("Open(string)", filePath);
_Word->dynamicCall("SetCaption(string)", "ocx test");
_Word->dynamicCall("SetMenuAccelerators(bool)", false);
_Word->dynamicCall("SetMenubar(bool)", false);
QGridLayout * ply = new QGridLayout(this);
ply->addWidget(_Word, , , , );
ply->setContentsMargins(, , , );
ui.widget->setLayout(ply);
效果图如下:
dsoframer的相关接口,不过常用的也就那么几个
BeforeDocumentClosed(IDispatch*,bool&) Document,Cancel
BeforeDocumentSaved(IDispatch*,QString,bool&) Document,Location,Cancel
OnActivationChange(bool) fGoingActive
OnDocumentClosed()
OnDocumentOpened(QString,IDispatch*) File,Document
OnFileCommand(dsoFileCommandType,bool&) Item,Cancel
OnPrintPreviewExit()
OnSaveCompleted(IDispatch*,QString,QString) Document,DocName,FullFileLocation
exception(int,QString,QString,QString) code,source,disc,help
propertyChanged(QString) name
signal(QString,int,void*) name,argc,argv
Activate()
Close()
CreateNew(QString) ProgIdOrTemplate
EnableFileCommand(dsoFileCommandType) Item bool
ExecOleCommand(int) OLECMDID
ExecOleCommand(int,QVariant) OLECMDID,Options
ExecOleCommand(int,QVariant,QVariant&) OLECMDID,Options,vInParam
ExecOleCommand(int,QVariant,QVariant&,QVariant&) OLECMDID,Options,vInParam,vInOutParam
GetDataObjectContent(QVariant) ClipFormatNameOrNumber QVariant
Open(QVariant) Document
Open(QVariant,QVariant) Document,ReadOnly
Open(QVariant,QVariant,QVariant) Document,ReadOnly,ProgId
Open(QVariant,QVariant,QVariant,QVariant)Document,ReadOnly,ProgId,WebUsername
Open(QVariant,QVariant,QVariant,QVariant,QVariant) Document,ReadOnly,ProgId,WebUsername,WebPassword
PrintOut()
PrintOut(QVariant) PromptUser
PrintOut(QVariant,QVariant) PromptUser,PrinterName
PrintOut(QVariant,QVariant,QVariant) PromptUser,PrinterName,Copies
PrintOut(QVariant,QVariant,QVariant,QVariant)
PromptUser,PrinterName,Copies,FromPage
PrintOut(QVariant,QVariant,QVariant,QVariant,QVariant) PromptUser,PrinterName,Copies,FromPage,ToPage
PrintOut(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant) PromptUser,PrinterName,Copies,FromPage,ToPage,OutputFile
PrintPreview()
PrintPreviewExit()
Save()
Save(QVariant) SaveAsDocument
Save(QVariant,QVariant) SaveAsDocument,OverwriteExisting
Save(QVariant,QVariant,QVariant)
SaveAsDocument,OverwriteExisting,WebUsername
Save(QVariant,QVariant,QVariant,QVariant) SaveAsDocument,OverwriteExisting,WebUsername,WebPassword
SetActivationPolicy(dsoActivationPolicy) ActivationPolicy
SetBackColor(QColor) BackColor
SetBorderColor(QColor) BorderColor
SetBorderStyle(dsoBorderStyle) BorderStyle
SetCaption(QString) Caption
SetDataObjectContent(QVariant,QVariant) ClipFormatNameOrNumber,DataByteArray
SetEnableFileCommand(dsoFileCommandType,bool) Item,rhs
SetEventsEnabled(bool) EventsEnabled
SetForeColor(QColor) ForeColor
SetFrameHookPolicy(dsoFrameHookPolicy) FrameHookPolicy
SetHostName(QString)HostName
SetLockServer(bool) LockServer
SetMenuAccelerators(bool) MenuAccelerators
SetMenubar(bool) Menubar SetModalState(bool) ModalState
SetTitlebar(bool) Titlebar
SetTitlebarColor(QColor) TitlebarColor
SetTitlebarTextColor(QColor) TitlebarTextColor
SetToolbars(bool) Toolbars
ShowDialog(dsoShowDialogType) DlgType
_PrintOutOld()
_PrintOutOld(QVariant) PromptToSelectPrinter
如果想看哪种方法调用失败或者是异常,请参考C++ gui程序附加dos输出窗口
注:需要完整事例的可以给我留言
![]() |
![]() |
很重要--转载声明
- 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
- 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。
qt集成dsoframer.ocx打开office办公软件的更多相关文章
- Office办公软件Excel使用整理
Office办公软件Excel使用整理 Excel默认打印预览于当前连接的打印机的纸张大小保持一致. Excel sheet不见了怎么办 -------------- 设置Excel第二页打印开始的位 ...
- 各版本Office办公软件下载
各版本Office办公软件下载:http://pan.baidu.com/share/home?uk=1174874628
- Office办公软件(Excel PPT Word)使用整理
Office办公软件(Excel PPT Word)使用整理.. -------------- Excel默认打印预览于当前连接的打印机的纸张大小保持一致. Excel sheet不见了怎么办 --- ...
- Linux常用Office办公软件
1.WPS Office是由金山软件股份有限公司自主研发的一款办公软件套件,可以实现办公最常用的文字.表格.演示等多种功能.免费提供海量的在线存储空间及文档模板.支持阅读和输出PDF文件.全面兼容Mi ...
- 【项目经验】macpro上安装office办公软件并破解
链接: https://pan.baidu.com/s/1i5hyKO9 密码: 7zjf 如果本机原有office,先卸载 双击pkg文件安装office for Mac 2016 安装完不要做打开 ...
- qt: 系统默认程序打开文件或者软件;
Qt提供了QDesktopServices类, 可以利用openUrl函数调用默认程序打开文件: 源码参考: #ifdef Q_OS_WIN32 m_szHelpDoc = QString(" ...
- Office办公软件各版本下载(一键安装)
史上最快最全的Office套件,含Word.PPT.Excel.Access.Outlook完整组件(微软官方版本). 推荐安装Office2010版本!一键完成清理.安装Office.自动激活. 图 ...
- 自己的系统重装之后,怎么去重新的装官方的office办公软件,详细教程
1 访问官网地址--微软,并通过自己的微软账号进行登录,转到下面的界面 2 点击上图的菜单栏的offce菜单项,跳转到下图 3 点击 菜单栏的产品 之后选择 查看office的全部的历史 ...
- 全套Office办公软件WORD/PPT/EXCEL视频教程 每日更新中
详情见Processon分享链接:https://www.processon.com/view/link/5b3f40abe4b09a67415e2bfc
随机推荐
- python打包工具 cx_Freeze介绍
原理 Python 脚本在装有 Python 的系统中可以直接双击运行,但绝大多数普通用户并没有配置此类环境,而编译为可执行二进制文件后,用户无需预先安装 Python 及依赖库即可像运行普通程序一样 ...
- fine-tuning 两阶段模型
目前大部分的nlp任务采用两阶段的模型,第一阶段进行预训练,一般是训练一个语言模型.最出名的是BERT,BERT的预训练阶段包括两个任务,一个是Masked Language Model,还有一个是N ...
- 【java】-- 多线程之间实现通讯
1.多线程之间如何实现通讯 1.1.什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同. 画图演示 1.2.多线程之间通讯需求 需求:第一个线程写入(inpu ...
- 使用ant编译zookeeper源码
1. 安装Ant Ant下载地址:http://ant.apache.org/bindownload.cgi 解压即可. 注意如果不配置环境变量的话需要使用绝对路径,我配置了. 开始我ant跑错了 U ...
- C# 中传参中的OUT 和 ref 区别 笔记
//out传参前需要对参数进行赋值处理,ref则不需要.//out.ref 传参都可以对值进行改变 1 static void Main(string[] args) { ; //int J = 10 ...
- sqlalchemy 使用
创建连接 # 参数: '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名' from sqlalchemy import create_engine engine = crea ...
- data parameter is nil 异常处理
似乎是NSData的问题,用排除法分析了一下 NSString *urlStr = [NSString stringWithFormat:@"%@/config/AppConfig.json ...
- IntelliJ IDEA 2016.2 配置Tomcat 运行Web项目
1.可能会出现的问题 Run-->Edit Configurations 中点击"+"号没有tomcat server... 解决办法:File--->Setting- ...
- EF CodeFirst类生成器
前段时间由于用到EF Code First. 上头让我添加一个功能,然后....要映射12张表到实体类中... 太无语了吧...一张表30多个字段啊老大!!!! "有没有工具可以快速弄啊,自 ...
- LoadRunner(四)——深度了解LR相关功能
参考学习感谢:<精通软件性能测试与LoadRunner实战> 相关功能: 1 无工具情况下的性能测试 2性能测试工具LoadRunner的工作原理 3 VuGen应用介绍 4 协议的类型及 ...

