VC下COM控件使用方法

来源:互联网 发布:bing 网络是什么意思 编辑:程序博客网 时间:2024/06/01 08:59

1.activeX控件采用组建对象模型(COM),即标题所说COM控件。

2.文中主要介绍两种类型:第一是以.ocx结尾的,第二是以.dll结尾的。

3.注册.ocx的方法之一:

Regserv32 c:\myctl.ocx

或者Regserv32 /s c:\myctl.ocx

4.VC2008下加载.ocx控件

工程资源——Toolbox最下方空白处(右键)——选择choose Items...——弹出Choose ToolBox Items——COM Components中选择已注册的控件

在Toolbox中生成一新图标,拖动图标至实例对话框中如下图

然后创建控件变量,创建后则会生产控件的.h,.cpp文件。

可根据.h中的接口函数使用控件。

 

5.对于.dll的COM控件注册

1)在开始菜单中点击运行进入命令行,输入dcomcnfg

2)组件服务——计算机——我的电脑——COM+应用程序——COM+ Dead Letter Queue Listener——组件(点击)

3)进入后,菜单——操作——新建——弹出对话框后“安装新组件”——选择路径

4)记下新组件的名字如下图“OphirLMMeasurement.ColMMeasurement.1”

6.在VC2008下使用.dll的COM控件

#import "C:\myctl.dll" no_namespace

使用: 

 

CoInitialize(NULL);
 CLSID clsid;
 CLSIDFromProgID(OLESTR("OphirLMMeasurement.CoLMMeasurement.1"),&clsid);
 CComPtr<ICoLMMeasurement> pMM;//智能指针
 pMM.CoCreateInstance(clsid);

///中间使用接口函数

pMM->Open()

....

///
 pMM.Release();
 CoUninitialize();
 

7.相关类型转换

SAFEARRAY  -> char*


 VARIANT vTemp;
 pMM->ScanUSB(&vTemp);

先把SAFEARRAY转换为BSTR类型
 BSTR* buf;

 SafeArrayAccessData(vTemp.parray, (void **)&buf);

再转为char*
 char* lpszText2 = _com_util::ConvertBSTRToString(buf[0]);......

......
 SysFreeString(buf[0]); // 用完释放
 delete[] lpszText2;

 

原创粉丝点击