如题!急!!
解决方案 »
- 麻烦帮我看看,为什麽动态导入失败,谢谢,有源码
- 简单的vc++的串口怎么读
- 有哪位做过数字图像模糊度与分辨率之间关系的课题?求助!
- VC6的SP5要安装到哪个目录,安装完后,需要对VC进行设置吗?
- tcp数据通信的时候为什么数据包会被自动分成多个包?
- 请帮忙看一段新手自己写的Socket代码
- 紧急求救:怎么样在一个COM组件中打开word文档?
- 请问有下载源代码的地方吗?新手上路,多多指教。
- 求两篇有关Modbus协议的英文文献
- CxImage 图像处理 除痣 局部框选
- ■■问个小问题:CSocket派生Socket类的OnReceive函数是否会在上次OnReceive未调用CSocket::OnReceive(nErrorCode);时再次进入?■■
- 本人欲配3000元左右的电脑,希望大家给出建议!
//设置线的点,并且画线
short CCYTLineCtrl::SetLine(const VARIANT FAR& varLine)
{
// TODO: Add your dispatch handler code here
DeleteAll();
/* switch(varLine.vt )
{
case VT_UI1:
AfxMessageBox("I1");
break;
case VT_I2:
AfxMessageBox("I2");
break;
case VT_I4:
AfxMessageBox("I4");
break;
case VT_ARRAY :
AfxMessageBox("Arr");
break;
case VT_BYREF|VT_UI1:
AfxMessageBox("ArrI1");
break;
case VT_BYREF|VT_I2:
AfxMessageBox("arri2");
break;
case VT_EMPTY:
AfxMessageBox("error");
break;
case VT_BYREF|VT_DISPATCH:
AfxMessageBox("arrDis");
break;
case VT_BYREF|VT_UNKNOWN:
AfxMessageBox("arrUnk");
break;
case VT_BYREF|VT_BSTR:
AfxMessageBox("arrBS");
break;
case VT_BYREF|VT_DATE:
AfxMessageBox("arrDate");
break;
case VT_BYREF|VT_CY:
AfxMessageBox("arrCY");
break;
case VT_BYREF|VT_ERROR:
AfxMessageBox("arrErr");
break;
case VT_BYREF|VT_I4:
AfxMessageBox("arrI4");
break;
//case VT_BYREF|VT_I2:
// AfxMessageBox("arrI2");
// break;
case VT_VARIANT | VT_BYREF:
AfxMessageBox("arrByte");
break;
}
VARIANT *ppVar=varLine.pvarVal ;
switch(ppVar ->vt )
{
case VT_UI1:
AfxMessageBox("I1");
break;
case VT_I2:
AfxMessageBox("I2");
break;
case VT_I4:
AfxMessageBox("I4");
break;
case VT_ARRAY :
AfxMessageBox("Arr");
break;
case VT_BYREF|VT_UI1:
AfxMessageBox("ArrI1");
break;
case VT_BYREF|VT_I2:
AfxMessageBox("arri2");
break;
case VT_EMPTY:
AfxMessageBox("error");
break;
case VT_BYREF|VT_DISPATCH:
AfxMessageBox("arrDis");
break;
case VT_BYREF|VT_UNKNOWN:
AfxMessageBox("arrUnk");
break;
case VT_BYREF|VT_BSTR:
AfxMessageBox("arrBS");
break;
case VT_BYREF|VT_DATE:
AfxMessageBox("arrDate");
break;
case VT_BYREF|VT_CY:
AfxMessageBox("arrCY");
break;
case VT_BYREF|VT_ERROR:
AfxMessageBox("arrErr");
break;
case VT_BYREF|VT_I4:
AfxMessageBox("arrI4");
break;
//case VT_BYREF|VT_I2:
// AfxMessageBox("arrI2");
// break;
case VT_VARIANT | VT_BYREF:
AfxMessageBox("arrByte");
break;
case VT_R4:
AfxMessageBox("R4");
break;
case VT_R8:
AfxMessageBox("R8");
break;
}*/
VARIANT *ppVar=varLine.pvarVal ;
SAFEARRAY *pSafe=NULL;
pSafe=ppVar->parray ;
if(pSafe==NULL) return 0;
long uBound=0;
SafeArrayGetUBound(pSafe,1,&uBound);
VARIANT *pvar=NULL;
SafeArrayLock(pSafe);
pvar=(VARIANT*)pSafe->pvData ;
SafeArrayUnlock(pSafe);
USES_CONVERSION;
CString strPoint;
CComBSTR bstr;
VARIANT var;
SAFEARRAY* pSafevar=NULL;
//VARIANT *pVal=NULL;
long uBound1=0;
BSTR *pvarPt=NULL;
CPoint pt;
//CArray<POINT,POINT>ptArray;
CString strText;
for(int i=0;i<uBound+1;i++)
{
var=pvar[i];
//pVal=var.pvarVal;
pSafevar=var.parray ;
uBound1=0;
pvarPt=NULL;
if(pSafevar==NULL) continue;
//ptArray.RemoveAll ();
SafeArrayGetUBound(pSafevar,1,&uBound1);
SafeArrayLock(pSafevar);
pvarPt=(BSTR*)pSafevar->pvData ;
CLine* pLine=NULL;
pLine=new CComObject<CLine>;
//pLine->AddRef ();
if(pvarPt==NULL || pLine==NULL) continue;
for(int j=0;j<uBound1+1;j++)
{
bstr=pvarPt[j];
strPoint=OLE2T(bstr);
} }
{
LPBYTE lpVarBuf = NULL; if ( (NULL != var.parray)
&& (var.vt == (VT_ARRAY | VT_UI1))
&& (1 == SafeArrayGetDim(var.parray))
)
{
// Validate the buffer bounds
long UpperBounds;
long LowerBounds; SafeArrayGetLBound(var.parray, 1, &LowerBounds);
SafeArrayGetUBound(var.parray, 1, &UpperBounds); if ((LowerBounds == 0) && (UpperBounds >= nBufLen - 1))
{
SafeArrayAccessData(var.parray, (void* *)&lpVarBuf); memcpy(lpBuf, lpVarBuf, nBufLen); SafeArrayUnaccessData(var.parray); return TRUE;
}
} return FALSE;
}