之前写了一篇在CATIA对话框中调用webbrowser控件的文章,当时只是实现了能够在CATIA对话框中调用控件,还存在以下问题:
1、首次调用对话框时不能创建webbrowser控件,必须在对话框存在的情况下再次调用才会创建成功;
2、在控件中的网页中点击某些链接时会打开新的浏览器窗口,同时在任务管理器中会出现2个进程,关闭控件与浏览器也不能关闭这些进程,需要自己在任务管理器中手动结束进程;
由于工作需要进一步的在CATIA对话框中应用webrowser控件,几个问题的原因与解决方法如下:
1、创建控件时需要宿主对话框的句柄,要求该对话框必须已经创建完成,由于CAA中消息机制的问题,控件无法与对话框同时创建,然而业务需求要(给用户的感觉是)同时创建。
解决方法为利用CAA中对话框的创建时的消息机制,在对话框大小变化事件中添加创建控件的代码。
2、点击网页中某些链接时,是否会打开新窗口是由网页中超链接中的属性target的值有关(_blank _self),当该值为_blank时会在新窗口打开,_self会在当前窗口打开。
解决方法有两个:
- 修改该超链接的target属性值
- 在控件的新窗口事件NewWindow3 中Cancel = TRUE
工作中还需要获取控件网页中的某些数据作为CATIA中操作的输入。有两种方式,一是通过微软提供的API