求教:控件事件如何返回一串数据 我在新建事件的时候,需要返回一串数据(一些是CSTRING的 一些是DWORD的数组)。 在事件的参数中都没有找到。我要如何转化才能传递这些参数呢?? 能不能通过指针?? 谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你能简单的举个例子吗?? 如果我要转化一组char数组。我是这样操作的char leddata[5];VARIANT val;val.vt = VT_BYREF;val.pbVal = (unsigned char)leddata;FireSubmitInfo(val);不过这样写还是报错,提示:error C2660: 'FireSubmitInfo': function does not take parameters //属性字段名称集合 下次记得用VARIANT的封装类_variant_t,这次就算了 VARIANT pFields; AFX_MANAGE_STATE(AfxGetStaticModuleState())//选择MFC支持自动添加 PCHAR ArrayBack[] = {"Id","Name"};//返回的数组,最简单的形式 SAFEARRAY* psa; //定义数组描述符 SAFEARRAYBOUND bound[1] = { 2,0 }; //一维数组.从0 开始,有2个元素。 psa = SafeArrayCreate( VT_VARIANT, 1, bound );//创建数组 _ASSERTE ( psa != NULL ); for(int i=0;i<2;i++) { _variant_t vr = ArrayBack[i]; SafeArrayPutElement(psa,(long*)&i,&vr);//数组赋值,将vr指向VT_VARIANT类型的SAFEARRAY对象psa中 } pFields.vt = VT_ARRAY | VT_VARIANT;// 变体数组,且值为变体 pFields.parray = psa; //数组传入返回值 返回字符串集合 可以考虑用IEmuStringtypedef std::vector<CStdString> StringArray;STDMETHODIMP CMyClass::GetInfos(short nClass, IEnumString **punk){ CHKSIMUSHOP; USES_CONVERSION; CString szInfos=“”; std::vector<LPOLESTR> szLines; StringArray::iterator it; it = szInfos.begin(); for (; it!=szInfos.end(); ++it) szLines.push_back (A2W((PCSTR)(*it))); typedef CComObject<CComEnum < IEnumString, &IID_IEnumString, LPOLESTR, _Copy <LPOLESTR> > > enumString; enumString* pEnum; enumString::CreateInstance (&pEnum);#if _MSC_VER >= 1400 HRESULT hr = pEnum->Init(szLines.begin()._Myptr,szLines.end()._Myptr, 0, AtlFlagCopy);#elif _MSC_VER<1300 HRESULT hr = pEnum->Init(szLines.begin(),szLines.end(), 0, AtlFlagCopy);#else HRESULT hr = pEnum->Init(&(*szLines.begin()),&(*szLines.end()), 0, AtlFlagCopy);#endif if (SUCCEEDED(hr)) hr = pEnum->QueryInterface(IID_IEnumString, (void**)punk); if (FAILED(hr)) return hr; return S_OK;} 求教TCP通信方式的socket发送文件问题 MFC如何同时移动多个无标题的对话框 如何找到IE地址栏后面的下拉三角 文件下载时候直接下载连接不上,从ie打开连接能下载,为何? 用代码添加菜单运行时出错 SOCKET连上后,如何取得客户端IP,60分给一人 哪里可以下载MFC类库大全和API32参考大全,我找的大多不全,谢谢 c++请解! 虚表如何存储的,和类或是对象如何关联上的??? 如何模拟键盘输入,要求模拟同时按下3个键如(A,上、下键)?(NULL) 在线等答案 opencv 2.x 中 用 Mat 存储数据问题
你能简单的举个例子吗?? 如果我要转化一组char数组。我是这样操作的
char leddata[5];
VARIANT val;
val.vt = VT_BYREF;
val.pbVal = (unsigned char)leddata;
FireSubmitInfo(val);不过这样写还是报错,提示:error C2660: 'FireSubmitInfo': function does not take parameters
VARIANT pFields;
AFX_MANAGE_STATE(AfxGetStaticModuleState())//选择MFC支持自动添加
PCHAR ArrayBack[] = {"Id","Name"};//返回的数组,最简单的形式
SAFEARRAY* psa; //定义数组描述符
SAFEARRAYBOUND bound[1] = { 2,0 }; //一维数组.从0 开始,有2个元素。
psa = SafeArrayCreate( VT_VARIANT, 1, bound );//创建数组
_ASSERTE ( psa != NULL );
for(int i=0;i<2;i++)
{
_variant_t vr = ArrayBack[i];
SafeArrayPutElement(psa,(long*)&i,&vr);//数组赋值,将vr指向VT_VARIANT类型的SAFEARRAY对象psa中
}
pFields.vt = VT_ARRAY | VT_VARIANT;// 变体数组,且值为变体
pFields.parray = psa; //数组传入返回值
STDMETHODIMP CMyClass::GetInfos(short nClass, IEnumString **punk)
{
CHKSIMUSHOP;
USES_CONVERSION;
CString szInfos=“”;
std::vector<LPOLESTR> szLines;
StringArray::iterator it;
it = szInfos.begin();
for (; it!=szInfos.end(); ++it)
szLines.push_back (A2W((PCSTR)(*it)));
typedef CComObject<CComEnum < IEnumString, &IID_IEnumString,
LPOLESTR, _Copy <LPOLESTR> > >
enumString;
enumString* pEnum;
enumString::CreateInstance (&pEnum);
#if _MSC_VER >= 1400
HRESULT hr = pEnum->Init(szLines.begin()._Myptr,szLines.end()._Myptr, 0, AtlFlagCopy);
#elif _MSC_VER<1300
HRESULT hr = pEnum->Init(szLines.begin(),szLines.end(), 0, AtlFlagCopy);
#else
HRESULT hr = pEnum->Init(&(*szLines.begin()),&(*szLines.end()), 0, AtlFlagCopy);
#endif if (SUCCEEDED(hr))
hr = pEnum->QueryInterface(IID_IEnumString, (void**)punk);
if (FAILED(hr))
return hr;
return S_OK;
}