⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index141.htm

📁 一本不错的VC编程的参考书
💻 HTM
字号:
<html>
<style type="text/css"><!--
.p9 {  font-family: "宋体"; font-size: 9pt}a        {text-transform: none; text-decoration: none;}
a:hover {text-decoration: underline; color: #FF0000;}
--></style>
<body background="../di2001.jpg">
<h3 align="center"><font COLOR="#AOAO99"></font></h3>
<table width="100%" border="1" cellspacing="1">
<tr><td><p align="center"><font color="#FF0000">如何向ATL-COM对象传送一个数组?</font></td></tr>
<tr><td><p>
</Br>
我想创建一个函数来向ATL-COM对象传送数组.<Br>
</Br>
如下代码的方法用于ACTIVEX中,可能对ATL-COM也有启发吧.<Br>
</Br>
CoInitialize(NULL);<Br>
&nbsp;CLSID m_clsid;<Br>
&nbsp;USES_CONVERSION;<Br>
&nbsp;::CLSIDFromString(T2OLE("ROUNDANALOG.RoundAnlgAARCtrl.1"), &m_clsid);<Br>
&nbsp;IDispatch FAR* pObj = (IDispatch FAR*)NULL;<Br>
&nbsp;CString str = "UpdateControl";<Br>
&nbsp;BSTR bstr = str.AllocSysString();<Br>
&nbsp;HRESULT hr = CoCreateInstance(m_clsid, NULL, CLSCTX_ALL, IID_IDispatch,<Br>
(void**)&pObj);<Br>
</Br>
&nbsp;SafeArrayAccessData(psa, (void**)&bstrArray);<Br>
&nbsp;bstrArray[0] = str.AllocSysString();<Br>
&nbsp;bstrArray[1] = str.AllocSysString();<Br>
&nbsp;SafeArrayUnaccessData(psa);<Br>
</Br>
VARIANTARG* pvars = new VARIANTARG[1];<Br>
&nbsp;VariantInit(&pvars[0]);<Br>
&nbsp;pvars[0].vt = VT_ARRAY|VT_BYREF|VT_BSTR;<Br>
&nbsp;pvars[0].pparray = &psa;<Br>
&nbsp;DISPID dispid;<Br>
</Br>
&nbsp;hr = pObj->GetIDsOfNames(IID_NULL, &bstr, 1,LOCALE_USER_DEFAULT, &dispid);<Br>
</Br>
DISPPARAMS disp = {pvars, &dispid, 1,1};<Br>
&nbsp;hr = pObj->Invoke(dispid, IID_NULL,<Br>
LOCALE_USER_DEFAULT,DISPATCH_PROPERTYPUT,&disp,NULL, NULL, NULL);<Br>
&nbsp;delete[] pvars;<Br>
&nbsp;pObj->Release();<Br>
&nbsp;CoUninitialize();<Br>
</Br>
在你的控制中建立如下并变量参考:<Br>
</Br>
void CRoundAnlgAARCtrl::SaveFunc(const VARIANT FAR& var)<Br>
{<Br>
&nbsp;// TODO: Add your dispatch handler code here<Br>
&nbsp;ASSERT(var.vt == VT_ARRAY | VT_BYREF | VT_BSTR);<Br>
&nbsp;SAFEARRAY* psa = *var.pparray;<Br>
}<Br>
</Br>
</Br>
</Br>
</p></td></tr>
</table>
</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -