在VB中如 ADO Library 的 Recordset 对象
rst.Field(下标).某方法
.某方法()我希望在自己编写的组建中也能实现这种功能如
Print myComponent.Item(0).name
或
myComponent.Item(1).doSth()试了很久都搞不出来。Google上也没有现成的资料。因此到此求助,希望大家能给点儿例子
rst.Field(下标).某方法
.某方法()我希望在自己编写的组建中也能实现这种功能如
Print myComponent.Item(0).name
或
myComponent.Item(1).doSth()试了很久都搞不出来。Google上也没有现成的资料。因此到此求助,希望大家能给点儿例子
解决方案 »
- 远程注入dll
- VC 串口设置
- 对话框本来没有标题栏,想动态添加的话有什么办法?
- 移动窗口有不动停顿得现象是怎么回事? 界面线程有问题??
- 关于CBRS_FLOAT_MULTI
- 用CPictureControl控件显示图片问题
- ★★FindWindowEx的小问题★
- 比较郁闷 如何用directdraw创建一个红色背景的图面
- 我在VC中想加入从网上下载的图标,可把图标放入到VC的资源中后图标显示出来就是灰的了,已经变色了,请问怎么样让图标不变色
- 求助:图像像素操作的问题
- 如何实现stl::string和VARIANT::DATE的相互转换
- 《〈〈〈有了idl文件,怎样生成相对应的tlb文件???
下面是我的总结,愿与大家分享:一.首先插入ATL对象 Items, 将创建类 CItems 和一个继承自Dispatch的接口IItems
(复习:该ATL 对象的 ProgId 为 工程名.类名,注意类名前的”C”去掉,如:”工程1.Items”)
二.插入另一个ATL 对象 Item,将创建类 CItem 和一个继承自Dispatch的接口IItem
给IItem接口添加任意类型的方法(doSth)或属性(name)
三.给接口 IItems 添加属性Item,为了让这个Item属性能够拥有IItem接口的所有属性和方法,只要让这个Item属性返回的类型为IItem接口的指针即可。
四.在该Item属性的Get方法中写代码:
STDMETHODIMP CItems::get_Item(IItem **pVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here
HRESULT hr = CoInitialize(NULL);
CLSID clsid;
hr = CLSIDFromProgID(OLESTR("Item对象的ProgID"),&clsid);
hr = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,_uuidof(IItem),(LPVOID*)pVal); ::CoUninitialize(); // 不要忘了必须在CoUninitialize之前才能给pVal赋值哦
return S_OK;
}五.编译,若出现错误
原因可能是IItems接口的Item属性的Get方法的返回类型为IItem,但在IDL文件中IItem接口在IItems接口定义之后,所以要修改IDL文件,在IItems接口定义之前先对IItem接口作个申明.
六.编译成功后就可以在VB中通过对象的Items属性返回并访问Item(接口)的属性或方法了
Dim obj as new Items
Obj.Item.name
Obj.Item.doSth()