您的位置:首页 > 其它

VC下COM控件使用方法

2013-03-13 14:19 597 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: