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--
腾讯云轻量应用服务器又要免费升级配置了,之前已经免费升级过一次了(腾讯云轻量应用服务器套餐配置升级 轻量老用户专享免费升配!),这次在上次的基础上再次升级。也许这就是良心云吧,名不虚传。腾讯云怎么样?腾讯云好不好。腾讯云轻量应用服务器 Lighthouse 是一种易于使用和管理、适合承载轻量级业务负载的云服务器,能帮助个人和企业在云端快速构建网站、博客、电商、论坛等各类应用以及开发测试环境,并提供...
sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服...
云步云怎么样?云步云是创建于2021年的品牌,主要从事出售香港vps、美国VPS、日本VPS、香港独立服务器、香港站群服务器等,机房有香港、美国、日本东京等机房,目前在售VPS线路有CN2+BGP、CN2 GIA,香港的线路也是CN2直连大陆,该公司旗下产品均采用KVM虚拟化架构。目前,云步云提供香港安畅、沙田、大浦、葵湾、将军澳、新世界等CN2机房云服务器,2核2G5M仅72.5元/月起。点击进...
colesafearray为你推荐
元宝网元宝网里面的一个币是真的投资赚钱吗representspublic class是什么意思mindmanager破解版求亿图mac破解版百度云!!!丁奇海贼王里“D”的意思是什么?vipjrvipjr怎么样?有真实体验的来说一下spawningvc出现error spawning c1.exe怎么解决?smartuploadjspsmartupload如何使用?smartupload为什么使用smartupload执行上传保存操作时用这句smart.save("upload")失败用smart.save("/upload")成功layoutsubviews如何修改TableViewCell中的ImageView的Frame和大小新手怎么制作表格我是初学者、电脑上怎么制作表格
长沙服务器租用 工信部域名备案 鲨鱼机 wordpress技巧 iis安装教程 2017年黑色星期五 php免费空间 坐公交投2700元 qq云端 免费美国空间 天翼云盘 vip域名 中国电信宽带测速器 超级服务器 中国电信测速器 photobucket 测速电信 如何登陆阿里云邮箱 netvigator 碳云 更多