最近有个方案,要用c++开发控件给第三方使用,之前没怎么接触过c++(基本上从0开始),上网搜了一天,遇到的问题记录如下。
需求:给第三方提供一个控件,控件里面需要嵌入一个网页,并且该控件可以和网页交互。
参考的文章:
https://blog.csdn.net/wangzhiyang925/article/details/38715605
https://blog.csdn.net/liuyi1207164339/article/details/46763377
https://blog.csdn.net/charlessimonyi/article/details/18450783
1.创建ActiveX控件
用管理员方式打开vs2015(ActiveX控件注册要用到管理员权限),创建MFC ActiveX控件,命名MyActiveX,全都选默认就好
2.创建完毕 可能会提示 一些文件找不到 ,这时需要设置一下调试目录
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include
E:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
E:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
C:\Program Files (x86)\Windows Kits\8.1\Include\um
注意这些目录可能跟你vs安装的版本 位置有些出入,要去看看是不是确实有这些文件夹
可能汇报 setdefaultDLldirectories 这个错误
设置库目录
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10150.0\ucrt\x86
3.新建一个MFC的程序 作为控件载体,都选默认就好了
然后在资源视图里面 关于对话框里面 直接插入我们刚才创建的控件,就能看到控件是运行成功了
将MFCApplicationTest 启动 打开关于对话框 既可以看到 我们的控件被插入进来了。
4.接下来 我们在MyActiveX 里面 加两个按钮。
这部分 这篇讲的比较详细
https://blog.csdn.net/wangzhiyang925/article/details/38715605
首先 MyActiveX从 MFCApplicationTest中移除,要不然重新生成时会提示被占用,而无法生成。
然后我们新建一个资源 我们接下来就把这个dialog 插入到上面我们建的控件中。 我会多粘一些图,MFC基本0知识
然后修改对话框属性:Border改为None,Control改为Ture,ID改为IDD_DIALOG1,Style改为Child,System改为False,Visible改为True
然后 双击 空白位置,创建CViewDialog类
在MyActiveXCtril.h 声明我们刚才建立的这个类
在MyActiveXCtrl.cpp中初始化这个类
项目->类向导(crlt+shift+X)
添加对应代码
然后将控件重新生成加入到Test中
基本上第一部分工作就完成了。
接下来 我尝试将 控件Microsoft Web Browser 加入到 MyActiveX中
然后执行的时候 会报这个错误,就卡到这里了(我直接在Test里面插入Microsoft Web Browser就是好的。。。)
另外 c++ 与js的交互 参考这个人的文章就好了,里面也有代码,我下完了执行 是可以完成相互交互的。
https://blog.csdn.net/charlessimonyi/article/details/18450783
感慨一下,还是C#的Activex控件做起来舒服点.......
代码记录在这