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(&param); 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(&param); 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(&param); 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--

无忧云( 9.9元/首月),河南洛阳BGP 2核 2G,大连BGP线路 20G高防 ,

无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,自营有国内雅安高防、洛阳BGP企业线路、香港CN2线路、国外服务器产品等,非常适合需要稳定的线路的用户,如游戏、企业建站业务需求和各种负载较高的项目,同时还有自营的高性能、高配置的BGP线路高防物理...

弘速云(28元/月)香港葵湾2核2G10M云服务器

弘速云怎么样?弘速云是创建于2021年的品牌,运营该品牌的公司HOSU LIMITED(中文名称弘速科技有限公司)公司成立于2021年国内公司注册于2019年。HOSU LIMITED主要从事出售香港vps、美国VPS、香港独立服务器、香港站群服务器等,目前在售VPS线路有CN2+BGP、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。可联系商家代安装iso系统,目前推出全场vps新开7折,...

RAKsmart美国VPS上市,活动期间5折抢购仅$30,$1.99/月

RAKsmart机房将于7月1日~7月31日推出“年中大促”活动,多重惊喜供您选择;爆款I3-2120仅30美金秒杀、V4新品上市,活动期间5折抢购、爆款产品持续热卖、洛杉矶+硅谷+香港+日本站群恢复销售、G口不限流量产品超低价热卖。美国VPS、日本VPS及香港VPS享全场7折优惠;爆款VPS $ 1.99/月限量秒杀,10台/天,售完即止, VPS 7折优惠码:VPS-TP-disRAKsmar...

colesafearray为你推荐
stackoverflowerrorjava.lang.StackOverflowError 是什么意思1u在电子中 1u代表什么 为什么和931.5MeV对应 1u=931.4940MeV/c 这个公式的c又是什么 凌乱soapui下载测试管理工具的soapUI开源测试工具showwindowShowWindow和EnableWindow区别拓扑关系什么是矢量数据、栅格数据、拓扑关系?slideshare幻灯片的占位符的作用是?索引超出了数组界限索引超出了数组界限是怎么回事啊?弹幕播放器看过的剧有一个弹幕出来的是什么播放器faq是什么意思在国际贸易中“FAQ”代表的是什么意思暴力破解密码用什么方法才能破解别人密码
网站空间价格 德国vps 荷兰服务器 realvnc 华为云主机 论坛空间 大容量存储器 宁波服务器 美国网站服务器 个人免费主页 服务器是干什么用的 云营销系统 cxz php服务器 免费蓝钻 globalsign WHMCS linux服务器系统 卡巴斯基免费版下载 衡天主机 更多