许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  CATIA二次开发CAA:对话框调用ActiveX控件与浏览器控件

CATIA二次开发CAA:对话框调用ActiveX控件与浏览器控件

阅读数 33
点赞 0
article_banner

第一次接触CAA 对CATIA在上学期间接触过一点 直到现在也只是限于画个砖(立方体)或者一个饼(圆柱)的水平。

到目前为止接触的CATIA版本大概有V5 R16 R18 R19 R20 R25 ,3DE R2016x(只会启动软件 做过一个小项目)。一直以来认为CAA是一个被达索(DS)封闭的开发环境,所有的功能实现只能调用它自己的API,而且自己也认为最好是通过它自己的API实现比较靠谱,知道最近我的认识才有所变化------------只要实现需求,什么方法都是好方法,而且CAA是基于组件的应用,也是基于C++的程序,所以实际上程序这东西没那么多限制 这里不知道怎么表达,总之就是那个意思。

      以前,认为CAA中无法调用MFC的东西,其实根本原因是VS在创建MFC Project的时候自动创建了一部分东西我们没注意,所以说其实在一定程度上也是可以使用MFC的。由于项目需要在CAA对话框中使用浏览器控件(跟 web应用 集成),我的实现经历过几个阶段。

     1、2015年   创建MFC Project 在对话框中添加浏览器控件  然后将该项目做成动态库(dll),然后在CAA对话框需要的地方加载该dll就可以了,这种方法我觉着是挺好的  缺点是加载这个dll后创建的对话框感觉不受CAA命令控制。其实说实话在Window中窗口没有不受控制的 只不过是跟CAA平常的填空式开发有点不同 通过 windows  的API 结合CAA是可以实现的  但是我懒没有做后面的事。

    2、时间不确定   我自己跟执着与用CAA自己的API实现一系列的响应过程  然后通过webservice的方式与web应用集成。这种方式也可以,但是对于流程一类的东西 还是基于web 网页的方式感觉顺畅一点。

    3、2018年    一个同事做工艺审查相关的研究,他觉得前两种方案都有点别扭 想在CAA对话框中直接嵌入浏览器控件,我也是有段时间没写代码 觉得我可以试试。有两个原因:1、我的认识有所转变,要照以前我肯定觉得不能做;2、同事在网上看到有个哥们在对话框中可以嵌入Media Player觉得好玩,他就找人家交流 结果那哥们要250的报酬,同事刚买房就没搭理他,后来知道另一个同事已经被这哥们坑了100大洋。实现思路有下面几种:

3.1 借用MFC

    3.1.1 创建CAA工程 创建承载浏览器控件的对话框;

    3.1.2 创建MFC  Project 生成浏览器控件类,会生成一个CExplore的类,拷贝.h与.cpp到CAA工程目录;这中间我遇到一个问题是调用这个类的时候 会提示 不是CAA授权的API 一度让我认为CAA无法使用MFC 这就要感谢上面那哥们了 是他让我认为一定是我哪里不对 因为我对MFC不熟啊 之前可以说是没接触过,经过度娘的指导 终于在编译的时候不报错了;

    3.1.3 在CAA对话框中插入控件   这里需要调用CExplore类中的Create方法 其中的pWnd指针就是你要承载控件对话框的指针,通过Windows API可以搞定。这里需要注意的是CAA加载自身对话框的时间问题,由于这个原因坑了我周六一天时间。

3.2 借用CAxWindow,这种方式大概过程如下:

// 引入IE控件,这里的路径为自己计算机上的控件的实际路径
#import "C:\WINNT\system32\...\ieframe.dll"

CoInitialize(NULL);

   AtlAxWinInit();

AfxEnableControlContainer();

WinContainer.Create(hdlgPlay, rc, 0,WS_CHILD |WS_VISIBLE);

LPOLESTR pszName=OLESTR("shell.Explorer.2");

WinContainer.CreateControl(pszName);

HRESULT  hr;

hr=WinContainer.QueryControl(__uuidof(IWebBrowser2),(void**)&iWebBrowser);//获取接口

iWebBrowser->Navigate2(url)

3.3 借用duilib,这个目前还没测试 据同事所说是可以的 应为他就是dll,CAA肯定没问题是可以调用dll的。

结尾,3.1的方式实现整个过程差不多一个星期左右的时间,因为熬夜还掉了好几根头发。目前还存在一些问题,浏览器控件中点击链接时会弹出ie应用,不能完全在控件中;窗口销毁时,需要额外的销毁ie ,否则在任务管理器中会看到飘着的进程。

pWebBrowser.Release();

     WinContainer.DestroyWindow();

     PostQuitMessage(0);

参考链接:

https://blog.csdn.net/zhidingguan2875/article/details/53947607

https://blog.csdn.net/nanjun520/article/details/53024503

http://www.cppblog.com/azhisoft/articles/426.html


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空