社区
ATL
帖子详情
com中怎么传递自定义结构参数?
nicholas
2001-02-23 09:02:00
我在做一个activex控件的时候,属性的参数好像只能定义一个,而且必须是规定的那些类型。请问可不可以传入多个参数,或者自定义结构数组?
...全文
370
26
打赏
收藏
com中怎么传递自定义结构参数?
我在做一个activex控件的时候,属性的参数好像只能定义一个,而且必须是规定的那些类型。请问可不可以传入多个参数,或者自定义结构数组?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nicholas
2001-03-05
打赏
举报
回复
dearmite(笨!真笨啊!) :
你给的代码是传递数组的呀,
我现在有一个办法,根据机器对齐要求,把结构参数申明为一个相应类型的数据块指针和长度,比如long *plVal,int nSize,在调用方法和方法内部作相应转换就可以了。你们说怎样?
项目花园范德彪
2001-03-04
打赏
举报
回复
尤其是许多OCX,只是把一个数组名传过去就行,不知道是如何弄的,???
项目花园范德彪
2001-03-04
打赏
举报
回复
尤其是许多OCX,只是把一个数组名传过去就行,不知道是如何弄的,???
项目花园范德彪
2001-03-04
打赏
举报
回复
尤其是许多OCX,只是把一个数组名传过去就行,不知道是如何弄的,???
项目花园范德彪
2001-03-04
打赏
举报
回复
尤其是许多OCX,只是把一个数组名传过去就行,不知道是如何弄的,???
项目花园范德彪
2001-03-04
打赏
举报
回复
但我认为VARIANT的方法好得多,
项目花园范德彪
2001-03-04
打赏
举报
回复
但我认为VARIANT的方法好得多,
项目花园范德彪
2001-03-04
打赏
举报
回复
但我认为VARIANT的方法好得多,
项目花园范德彪
2001-03-04
打赏
举报
回复
但我认为VARIANT的方法好得多,
项目花园范德彪
2001-03-04
打赏
举报
回复
CoInitialize(NULL);
CLSID m_clsid;
USES_CONVERSION;
::CLSIDFromString(T2OLE("ROUNDANALOG.RoundAnlgAARCtrl.1"), &m_clsid);
IDispatch FAR* pObj = (IDispatch FAR*)NULL;
CString str = "UpdateControl";
BSTR bstr = str.AllocSysString();
HRESULT hr = CoCreateInstance(m_clsid, NULL, CLSCTX_ALL, IID_IDispatch,
(void**)&pObj);
SafeArrayAccessData(psa, (void**)&bstrArray);
bstrArray[0] = str.AllocSysString();
bstrArray[1] = str.AllocSysString();
SafeArrayUnaccessData(psa);
VARIANTARG* pvars = new VARIANTARG[1];
VariantInit(&pvars[0]);
pvars[0].vt = VT_ARRAY|VT_BYREF|VT_BSTR;
pvars[0].pparray = &psa;
DISPID dispid;
hr = pObj->GetIDsOfNames(IID_NULL, &bstr, 1,LOCALE_USER_DEFAULT, &dispid);
DISPPARAMS disp = {pvars, &dispid, 1,1};
hr = pObj->Invoke(dispid, IID_NULL,
LOCALE_USER_DEFAULT,DISPATCH_PROPERTYPUT,&disp,NULL, NULL, NULL);
delete[] pvars;
pObj->Release();
CoUninitialize();
这是一个朋友给的,我不太懂,
项目花园范德彪
2001-03-04
打赏
举报
回复
CoInitialize(NULL);
CLSID m_clsid;
USES_CONVERSION;
::CLSIDFromString(T2OLE("ROUNDANALOG.RoundAnlgAARCtrl.1"), &m_clsid);
IDispatch FAR* pObj = (IDispatch FAR*)NULL;
CString str = "UpdateControl";
BSTR bstr = str.AllocSysString();
HRESULT hr = CoCreateInstance(m_clsid, NULL, CLSCTX_ALL, IID_IDispatch,
(void**)&pObj);
SafeArrayAccessData(psa, (void**)&bstrArray);
bstrArray[0] = str.AllocSysString();
bstrArray[1] = str.AllocSysString();
SafeArrayUnaccessData(psa);
VARIANTARG* pvars = new VARIANTARG[1];
VariantInit(&pvars[0]);
pvars[0].vt = VT_ARRAY|VT_BYREF|VT_BSTR;
pvars[0].pparray = &psa;
DISPID dispid;
hr = pObj->GetIDsOfNames(IID_NULL, &bstr, 1,LOCALE_USER_DEFAULT, &dispid);
DISPPARAMS disp = {pvars, &dispid, 1,1};
hr = pObj->Invoke(dispid, IID_NULL,
LOCALE_USER_DEFAULT,DISPATCH_PROPERTYPUT,&disp,NULL, NULL, NULL);
delete[] pvars;
pObj->Release();
CoUninitialize();
这是一个朋友给的,我不太懂,
项目花园范德彪
2001-03-04
打赏
举报
回复
CoInitialize(NULL);
CLSID m_clsid;
USES_CONVERSION;
::CLSIDFromString(T2OLE("ROUNDANALOG.RoundAnlgAARCtrl.1"), &m_clsid);
IDispatch FAR* pObj = (IDispatch FAR*)NULL;
CString str = "UpdateControl";
BSTR bstr = str.AllocSysString();
HRESULT hr = CoCreateInstance(m_clsid, NULL, CLSCTX_ALL, IID_IDispatch,
(void**)&pObj);
SafeArrayAccessData(psa, (void**)&bstrArray);
bstrArray[0] = str.AllocSysString();
bstrArray[1] = str.AllocSysString();
SafeArrayUnaccessData(psa);
VARIANTARG* pvars = new VARIANTARG[1];
VariantInit(&pvars[0]);
pvars[0].vt = VT_ARRAY|VT_BYREF|VT_BSTR;
pvars[0].pparray = &psa;
DISPID dispid;
hr = pObj->GetIDsOfNames(IID_NULL, &bstr, 1,LOCALE_USER_DEFAULT, &dispid);
DISPPARAMS disp = {pvars, &dispid, 1,1};
hr = pObj->Invoke(dispid, IID_NULL,
LOCALE_USER_DEFAULT,DISPATCH_PROPERTYPUT,&disp,NULL, NULL, NULL);
delete[] pvars;
pObj->Release();
CoUninitialize();
这是一个朋友给的,我不太懂,
项目花园范德彪
2001-03-04
打赏
举报
回复
CoInitialize(NULL);
CLSID m_clsid;
USES_CONVERSION;
::CLSIDFromString(T2OLE("ROUNDANALOG.RoundAnlgAARCtrl.1"), &m_clsid);
IDispatch FAR* pObj = (IDispatch FAR*)NULL;
CString str = "UpdateControl";
BSTR bstr = str.AllocSysString();
HRESULT hr = CoCreateInstance(m_clsid, NULL, CLSCTX_ALL, IID_IDispatch,
(void**)&pObj);
SafeArrayAccessData(psa, (void**)&bstrArray);
bstrArray[0] = str.AllocSysString();
bstrArray[1] = str.AllocSysString();
SafeArrayUnaccessData(psa);
VARIANTARG* pvars = new VARIANTARG[1];
VariantInit(&pvars[0]);
pvars[0].vt = VT_ARRAY|VT_BYREF|VT_BSTR;
pvars[0].pparray = &psa;
DISPID dispid;
hr = pObj->GetIDsOfNames(IID_NULL, &bstr, 1,LOCALE_USER_DEFAULT, &dispid);
DISPPARAMS disp = {pvars, &dispid, 1,1};
hr = pObj->Invoke(dispid, IID_NULL,
LOCALE_USER_DEFAULT,DISPATCH_PROPERTYPUT,&disp,NULL, NULL, NULL);
delete[] pvars;
pObj->Release();
CoUninitialize();
这是一个朋友给的,我不太懂,
项目花园范德彪
2001-03-04
打赏
举报
回复
关注,!!!!!!!!!!!!!!!!!
项目花园范德彪
2001-03-04
打赏
举报
回复
关注,!!!!!!!!!!!!!!!!!
项目花园范德彪
2001-03-04
打赏
举报
回复
关注,!!!!!!!!!!!!!!!!!
coolfired
2001-02-27
打赏
举报
回复
说是com,实际上和调用端还是有关联,比如vbscript的数据类型就很局限.
netrouter
2001-02-27
打赏
举报
回复
你可以参考微软的关于组件的书,Inside COM+ Base Services(组件编程技术内幕)其中提到了如何传递自定义结构参数。以下摘自该书:
要采用UDT作为方法的参数,需要首先在IDL文件中定义该结构,然后用MIDL来生成类型库。例:
在IDL文件中
typedef[ uuid(10000099-0000-000...)
struct myDataType {
int x;
int y;
} myDataType
书中还提到了另一种方法,但我看不太懂,你最好自己研究研究。
nicholas
2001-02-26
打赏
举报
回复
是啊,一般的com组件可以散集结构的。那在activex中没办法传递结构了?
luxyi
2001-02-26
打赏
举报
回复
你指的ActiveX如果是control的话,确实不能。因为control的接口是继承IDispatch的。
加载更多回复(6)
Qt-信号和槽函数
传递
自定义
参数
前需注册
自定义
数据类型
Qt 信号和槽函数
参数
只能是基于 Qt 的基础类型的,比如 QString、int、bool 等,如果想
传递
自定义
类型默认情况下是行不通的。要想在 Qt 的信号和槽函数之间
传递
自定义
类型,可以先将自己的
自定义
类型注册一下,使用如下代码: Q_DECLARE_METATYPE(nim::DocTransInfo) nim::DocTransInfo为你的
自定义
数据
结构
,我这里是一个
结构
体。当需要
传递
这个数据时,不是直接使用,而是用QVariant来包装一下,信号和槽函数则直接使用QVarian...
qt在不同的线程
中
传递
自定义
结构
体
参数
qt程序的函数如果都在主线程
中
,那么
自定义
的
结构
体是可以进行
传递
的。但是当不同的线程就不能进行
传递
。在发送信号的文件
中
加入。
如何创建
自定义
前端组件?
如何创建
自定义
前端组件?
Android NDK - JNI
传递
自定义
类型及其数组
传递
在实际开发
中
,JNI与java有很多场景需要
传递
数据,有时是基本数据类型,而有时则是
自定义
类型。在遇到通过回调Java
中
函数进行
自定义
类型
传递
时,是不可以直接
传递
,需要进行转换,本篇将针对
参数
存在
自定义
类型和
自定义
类型数组两种场景进行举例说明。 基本数据类型
参数
数组 针对如下代码片段说明: //基本数据类型
参数
数组的静态函数 package
com
.test.jni; //Java ...
Android安卓
中
jni与Java之间
传递
复杂的
自定义
数据
结构
前文[【Android安卓
中
封装opencv jni代码为Java类】](https://wanggao1990.blog.csdn.net/article/details/105179822)简单介绍了jni代码封装为Java接口代码,直接使用opencv的Mat对象的nativeObj作为指针
传递
进行赋值,以及
传递
基础类型
参数
。本文将实现更为复杂的
结构
对象
传递
,首先介绍jni基本的数据类型、接口函数和使用示例,再根据一个示例c++封装Java接口,最后说明jni的复杂数据
结构
传递
实现。
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章