colesafearray如何使用DISPPARAMS和SAFEARRAY
colesafearray 时间:2021-07-11 阅读:(
)
用VC++6.0编写串口通信的程序出现下面的错误提示,求解,谢谢……利用的是mscomm控件错误提示在问题补充中
这个问题出现一般都是变量出现问题了,你去看看问题里面显示的那几个变量,尝试先//消去后的反应。
我做的时候也经常遇到,不要被他吓到了。
。
。
如何使用DISPPARAMS和SAFEARRAY
1> DISPPARAMS配合BSTR使用,在调用的函数结束后释放内存LRESULT CMainDlg::OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/){ // TODO: Add validation code DISPPARAMS param; param.cArgs = 3; param.cNamedArgs = 0; param.rgdispidNamedArgs = NULL; param.rgvarg = new VARIANTARG[3]; param.rgvarg[0].vt = VT_BSTR; param.rgvarg[0].bstrVal = SysAllocString(L"A000"); param.rgvarg[1].vt = VT_BSTR; param.rgvarg[1].bstrVal = SysAllocString(L"A111"); param.rgvarg[2].vt = VT_BSTR; param.rgvarg[2].bstrVal = SysAllocString(L"A222"); UserDispparams(¶m); SysFreeString(param.rgvarg[0].bstrVal); SysFreeString(param.rgvarg[1].bstrVal); SysFreeString(param.rgvarg[2].bstrVal); delete [] param.rgvarg; CloseDialog(wID); return 0;}// ... ...HRESULT CMainDlg::UserDispparams(DISPPARAMS* pDispParams){ if (!pDispParams) return E_INVALIDARG; if (3 != pDispParams->cArgs) return E_INVALIDARG; wstring strMsg; strMsg = strMsg + pDispParams->rgvarg[0].bstrVal + L", "; strMsg = strMsg + pDispParams->rgvarg[1].bstrVal + L", "; strMsg = strMsg + pDispParams->rgvarg[2].bstrVal + L"."; MessageBox(strMsg.c_str(), L"UserDispparams", 0x20); return S_OK;}2> DISPPARAMS配合BSTR使用,在调用的函数中释放释放内存LRESULT CMainDlg::OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/){ // TODO: Add validation code DISPPARAMS param; param.cArgs = 3; param.cNamedArgs = 0; param.rgdispidNamedArgs = NULL; param.rgvarg = new VARIANTARG[3]; param.rgvarg[0].vt = VT_BSTR; param.rgvarg[0].bstrVal = CComBSTR(L"A000").Detach(); param.rgvarg[1].vt = VT_BSTR; param.rgvarg[1].bstrVal = CComBSTR(L"A111").Detach(); param.rgvarg[2].vt = VT_BSTR; param.rgvarg[2].bstrVal = CComBSTR(L"A222").Detach(); UserDispparams(¶m); delete [] param.rgvarg; CloseDialog(wID); return 0;}// ... ...HRESULT CMainDlg::UserDispparams(DISPPARAMS* pDispParams){ if (!pDispParams) return E_INVALIDARG; if (3 != pDispParams->cArgs) return E_INVALIDARG; wstring strMsg; CComBSTR bstr0, bstr1, bstr2; bstr0.Attach(pDispParams->rgvarg[0].bstrVal); bstr1.Attach(pDispParams->rgvarg[1].bstrVal); bstr2.Attach(pDispParams->rgvarg[2].bstrVal); strMsg += bstr0; strMsg += L", "; strMsg += bstr1; strMsg += L", "; strMsg += bstr2; strMsg += L"."; MessageBox(strMsg.c_str(), L"UserDispparams", 0x20); return S_OK;} 3> DISPPARAMS配合SAFEARRAY的使用,利用CComSafeArray来管理内存LRESULT CMainDlg::OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/){ // TODO: Add validation code DISPPARAMS param; param.cArgs = 4; param.cNamedArgs = 0; param.rgdispidNamedArgs = NULL; param.rgvarg = new VARIANTARG[4]; param.rgvarg[0].vt = VT_BSTR; param.rgvarg[0].bstrVal = CComBSTR(L"A000").Detach(); param.rgvarg[1].vt = VT_BSTR; param.rgvarg[1].bstrVal = CComBSTR(L"A111").Detach(); param.rgvarg[2].vt = VT_BSTR; param.rgvarg[2].bstrVal = CComBSTR(L"A222").Detach(); CComSafeArray<BSTR> sa; sa.Add(CComBSTR(L"B000").Detach()); sa.Add(CComBSTR(L"B111").Detach()); sa.Add(CComBSTR(L"B222").Detach()); param.rgvarg[3].vt = VT_ARRAY; param.rgvarg[3].parray = sa.Detach(); UserDispparams(¶m); delete [] param.rgvarg; _CrtDumpMemoryLeaks(); CloseDialog(wID); return 0;}HRESULT CMainDlg::UserDispparams(DISPPARAMS* pDispParams){ if (!pDispParams) return E_INVALIDARG; if (4 != pDispParams->cArgs) return E_INVALIDARG; wstring strMsg; CComBSTR bstrA0, bstrA1, bstrA2; CComBSTR bstrB0, bstrB1, bstrB2; CComSafeArray<BSTR> sa; bstrA0.Attach(pDispParams->rgvarg[0].bstrVal); bstrA1.Attach(pDispParams->rgvarg[1].bstrVal); bstrA2.Attach(pDispParams->rgvarg[2].bstrVal); sa.Attach(pDispParams->rgvarg[3].parray); bstrB0.Attach(sa.GetAt(0)); bstrB1.Attach(sa.GetAt(1)); bstrB2.Attach(sa.GetAt(2)); strMsg += bstrA0; strMsg += L", "; strMsg += bstrA1; strMsg += L", "; strMsg += bstrA2; strMsg += L"."; strMsg += bstrB0; strMsg += L", "; strMsg += bstrB1; strMsg += L", "; strMsg += bstrB2; strMsg += L"."; MessageBox(strMsg.c_str(), L"UserDispparams", 0x20); return S_OK;}--END--
俄罗斯vps云服务器商家推荐!俄罗斯VPS,也叫毛子主机(毛子vps),因为俄罗斯离中国大陆比较近,所以俄罗斯VPS的延迟会比较低,国内用户也不少,例如新西伯利亚机房和莫斯科机房都是比较热门的俄罗斯机房。这里为大家整理推荐一些好用的俄罗斯VPS云服务器,这里主要推荐这三家:justhost、ruvds、justg等俄罗斯vps主机,方便大家对比购买适合自己的俄罗斯VPS。一、俄罗斯VPS介绍俄罗斯...
BuyVM 商家算是有一些年头,从早年提供低价便宜VPS主机深受广大网友抢购且也遭到吐槽的是因为审核账户太过于严格。毕竟我们国内的个人注册账户喜欢账户资料乱写,毕竟我们看英文信息有些还是比较难以识别的,于是就注册信息的时候随便打一些字符,这些是不能通过的。前几天,我们可以看到BUYVM商家有新增加迈阿密机房,而且商家有提供大硬盘且不限制流量的VPS主机,深受有一些网友的喜欢。目前,BUYVM商家有...
RFCHOST,这个服务商我们可能有一些朋友知道的。不要看官网是英文就以为是老外服务商,实际上这个服务商公司在上海。我们实际上看到的很多商家,有的是繁体,有的是英文,实际上很多都是我们国人朋友做的,有的甚至还做好几个品牌域名,实际上都是一个公司。对于RFCHOST商家还是第一次分享他们家的信息,公司成立大约2015年左右。目前RFCHOST洛杉矶机房VPS正进行优惠促销,采用CN2优化线路,电信双...
colesafearray为你推荐
weakhashmapWeakHashMap和HashMap的区别fclosefclose / fopen策略组电脑组策略详解溢出隐藏overflow:hidden是什么意思?调度系统配送调度系统是干嘛的?是手机还是电脑的系统?问卷星登陆问卷星的使用步骤layoutsubviews如何让NSSplitView的子View的大小固定清除电脑垃圾怎样彻底清除电脑的垃圾相似图片搜索如何输入图片并且搜出最相似的图片?51信用卡论坛刚才发现51信用卡管家可以查个人征信了,就查了下信用卡信用记录。这是截图,大家帮我看看我的这个逾期
域名抢注 备案域名出售 拜登买域名批特朗普 linkcloud godaddy优惠码 表单样式 中国电信测速112 工信部icp备案号 刀片式服务器 hinet nerds 789电视剧 安徽双线服务器 lick 防cc攻击 域名转入 测试网速命令 中国联通宽带测试 大化网 阿里云邮箱怎么注册 更多