最近一段时间真是事情太多了,前不久项目中一个嵌入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、接下来直接上代码
1 QAxWidget * _Word = new QAxWidget(this); 2 3 _Word->setControl("{00460182-9E5E-11d5-B7C8-B8269041DD57}"); 4 5 _Word->setProperty("Visible", true); 6 7 QString filePath = QFileDialog::getOpenFileName(0, "Open doc file", QString(), "*.doc"); 8 9 if (filePath.isEmpty()) 10 11 return; 12 13 _Word->dynamicCall("Open(string)", filePath); 14 15 _Word->dynamicCall("SetCaption(string)", "ocx test"); 16 17 _Word->dynamicCall("SetMenuAccelerators(bool)", false); 18 19 _Word->dynamicCall("SetMenubar(bool)", false); 20 21 QGridLayout * ply = new QGridLayout(this); 22 23 ply->addWidget(_Word, 0, 0, 1, 1); 24 25 ply->setContentsMargins(0, 0, 0, 0); 26 27 ui.widget->setLayout(ply);