3,245
社区成员
发帖
与我相关
我的任务
分享
ptArray[i].x = plongArray[2*i];
ptArray[i].y = plongArray[2*i+1];
IInkDisp *pInkDisp;
IInkStrokeDisp* pStroke;
HRESULT hr = m_pInkOverlay->m_pIInkOverlay->get_Ink(&pInkDisp);
if (SUCCEEDED(hr))
{
hr = pInkDisp->get_Strokes(&m_pInkStrokes);
if (SUCCEEDED(hr))
{
long nStrokes;
hr = m_pInkStrokes->get_Count(&nStrokes);
if (SUCCEEDED(hr))
{
for (int i =0; i < nStrokes; i++)
{
hr = m_pInkStrokes->Item(i, &pStroke);
if (SUCCEEDED(hr))
{
// Code that uses pStroke
VARIANT_BOOL bDeleted;
hr = pStroke->get_Deleted(&bDeleted);
if (SUCCEEDED(hr))
{
if (!bDeleted)
{
int j = i+1;
if (j==nStrokes)
{
VARIANT points;
//points.vt = VT_I4;
points.vt = VT_ARRAY|VT_BYREF|VT_I4;
hr = pStroke->GetPoints(ISC_FirstElement/*0*/,ISC_AllElements/*-1*/,&points);
if (SUCCEEDED(hr))
{
//POINT *stackPoint = (POINT*)(points.plVal);
//UndoPoints.push(stackPoint);
POINT *ptArray = NULL;
LONG *plongArray = NULL;
SAFEARRAY *psa = points.parray;
if (SUCCEEDED(hr = SafeArrayAccessData(psa,(void**)&plongArray)))
{
long j = psa->cbElements/2;
for (long i = 0 ;i<j;i++)
{
ptArray[i].x = plongArray[2*i];
ptArray[i].y = plongArray[2*i+1];
}
if (SUCCEEDED(hr = SafeArrayUnaccessData(psa)))
{
UndoPoints.push(ptArray);
hr = pInkDisp->DeleteStroke(pStroke);
Invalidate();
pStroke->Release();
pStroke = NULL;
pInkDisp->Release();
pInkDisp = NULL;
return;
}
}
}
}
}
}
}
}
}
}
}
pStroke->Release();
pStroke = NULL;
pInkDisp->Release();
pInkDisp = NULL;
POINT p = {100, 200}; // 假设有这么一个点
// POINT -> VARIANT
VARIANT v;
v.vt = VT_R8;
memcpy(&v.dblVal, &p, 8);
// VARIANT -> POINT
if(v.vt == VT_R8)
memcpy(&p, &v.dblVal, 8);