这个小结确实很小,呵呵,记录一点零星的东西,也是这几天搞mapgis 7搞得头晕中出现的小问题。
1、vb调用dll在上一篇已经写过了。
2、vc.net调用com组件,好几种方法,基于Com组件的在VC环境下有三种开发模式:
(1)#include “xxxx_i.c”,#include”xxxx.h”的方式,这种方式就是把组件接口当一般的C++对象类使用;
(2)#import “xxxx.dll”的方式,这种方式利用组件接口生成了智能指针包装类,使用的时候可以用这些包装类来完成工作需要;(a、包含头文件【类似CLSID_mcGDataBase的class id变量定义于组件头文件相应的接口c文件中,所以一般包含两个文件,以mc_basXCls.h为例,它的接口c文件为mc_basXcls7_i.c】,b、定义智能指针对象CComPtr<IGDataBase> ptrGDb= NULL;c、创建类ptrGDb.CoCreateInstance(CLSID_mcGDataBase)【CoCreateInstance为CComPtr类提供的方法,该方法以要创建的COM对象的class id为参数创建一个该class的对象,然后将其绑定于调用方法的智能指针。】;d、接口方法的调用;e、接口查询,QueryInterface也是ComPtr提供的方法。参数为一个欲查询类型的接口指针,可以为原始接口指针也可以是原始接口的智能指针。f、释放接口Release)
(3)利用类型库”….tlb”生成Warpper包装类的方式,这种方式利用warpper后的C++类来完成工作需要;(添加类-typelib中的mfc类,CreateDispatch、ReleaseDispatch)
3、vc.net调用com控件,和c#一样,在工具箱中选择项。
4、vc6.0中调用com组件,与2类似(通过类向导)
5、vc.net中字符集引起乱码,在project-**项目属性-配置属性:字符集将“使用unicode字符集”改选择“使用多字节字符集”。这是我在打开CFileDialog是文件类型老是显示成乱码,最后找到这个问题。如果还不行,就将rc资源中的version中的blockhead改成“中文”。
6、包含头文件、tlb、lib目录:project-**项目属性-配置属性:c/c++下,第一个“附加包含目录”中添加include和tlb文件夹;在链接器下,“附加库目录”中添加lib文件夹。