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

📄 subject_17022.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:17022 发表者:indal 发表日期:2002-10-07 16:12:54
<br>主题://我在编写AUTOCAD ActiveX时,要画一个圆,圆心坐标类型是VARIANT,它应怎样赋值!
<br>内容://我在编写AUTOCAD ActiveX时,要画一个圆<BR>&nbsp;&nbsp;&nbsp;&nbsp;IAcadApplication m_autocad;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IAcadDocuments m_acaddocs;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IAcadDocument&nbsp;&nbsp;m_acaddoc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IAcadModelSpace m_acadmodel;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;m_autocad.CreateDispatch("AutoCAD.Application")<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_autocad.SetVisible(true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_acaddocs.AttachDispatch(m_autocad.GetDocuments(),true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_acaddoc.AttachDispatch(m_acaddocs.Add(vtMissing),true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_acadmodel.AttachDispatch(m_acaddoc.GetModelSpace(),true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//想画一个园<BR>&nbsp;&nbsp;&nbsp;&nbsp;VARIANT center;<BR>&nbsp;&nbsp;&nbsp;&nbsp;double radiu=100;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//LPDISPATCH IAcadModelSpace::AddCircle(const VARIANT& Center, double Radius)<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Center 应怎样赋值呢?<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_acadmodel.AddCircle(certer,r);<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:luo 回复日期:2002-10-07 17:10:10
<br>内容:VARIANT是一个比较复杂的结构,你可以通过COleVarian类来初始化它,但是我想你首先应该知道这个Center是以什么形式赋值的。你可以自己去MSDN去看一下VARIANT的定义你就知道了。你最好能找到现成的例子。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:㊣剑不如人♀ 回复日期:2002-10-07 17:48:39
<br>内容:在C++builder中是这样的: <BR>Variant pt; <BR>double temp; <BR>pt=VarArrayCreate(OPENARRAY(int,(0,2)),varDouble); <BR>temp=3.0; <BR>pt.PutElement(&temp,0); <BR>temp=4.0; <BR>pt.PutElement(&temp,1); <BR>temp=0; <BR>pt.PutElement(&temp,2); <BR><BR>Center应是一个数组,我估计是SafeArray数组。<BR>根据C++Builder的源码,在VC里程序应是怎样的呢??<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐景周 回复日期:2002-10-07 19:06:38
<br>内容:可试试下面方法:<BR><BR>VARIANT vaData;<BR><BR>vaData = m_com.YourMethodHere();<BR>ASSERT(vaData.vt == VT_BSTR);<BR><BR>CString strData(vaData.bstrVal);<BR><BR>可以加入各种类型,来用下面涵数转换: <BR><BR>CString VariantToString(VARIANT * va)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString s;<BR>&nbsp;&nbsp;&nbsp;&nbsp;switch(va-&gt;vt)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ /* vt */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case VT_BSTR:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return CString(vaData-&gt;bstrVal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case VT_BSTR | VT_BYREF:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return CString(*vaData-&gt;pbstrVal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case VT_I4:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.Format(_T("%d"), va-&gt;lVal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return s;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case VT_I4 | VT_BYREF:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.Format(_T("%d"), *va-&gt;plVal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case VT_R8:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.Format(_T("%f"), va-&gt;dblVal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return s;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... remaining cases left as an Exercise For The Reader<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(FALSE); // unknown VARIANT type (this ASSERT is optional)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return CString("");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} /* vt */<BR>&nbsp;&nbsp; }<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:㊣剑不如人♀ 回复日期:2002-10-07 20:22:52
<br>内容:怎样把一个点的坐标赋值给一个VARIANT变量呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:luo 回复日期:2002-10-08 11:13:56
<br>内容:HRESULT hresult;<BR>SAFEARRAY *psa;<BR>SAFEARRAYBOUND rgsabound[2];<BR>rgsabound[0].lLbound = 0;<BR>rgsabound[0].cElements = x;//X坐标<BR>rgsabound[1].lLbound = 1;<BR>rgsabound[1].cElements = y;//Y坐标<BR>psa= SafeArrayCreate( VT_R8, 2, rgsabound );<BR>if ( psa == NULL )//报错<BR>VARIANT var;<BR>var.vt = VT_ARRAY;<BR>var.parray = psa;<BR>就可以了,不过我可是没有试过这段代码,我是根据你的C++Builder改的。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:㊣客家人 回复日期:2002-10-08 18:45:00
<br>内容:HRESULT getVariantFromDblArray(VARIANT* pVal, const double pt[3])<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;pVal-&gt;vt = VT_ARRAY | VT_R8;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;SAFEARRAYBOUND rgsaBound;<BR>&nbsp;&nbsp;&nbsp;&nbsp;rgsaBound.lLbound = 0L;<BR>&nbsp;&nbsp;&nbsp;&nbsp;rgsaBound.cElements = 3;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pVal-&gt;parray = SafeArrayCreate(VT_R8, 1, &rgsaBound);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (! pVal-&gt;parray)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return E_OUTOFMEMORY;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;HRESULT hr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (long i = 0; i &lt; 3; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((hr = SafeArrayPutElement(pVal-&gt;parray, &i,<BR>(void*)&pt[i]))!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return hr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return S_OK;<BR>}<BR>pass in autocad
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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