CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

画Skeleton,暨如何实现变长参数

Posted on 2011-07-08 11:44  mumuliang  阅读(401)  评论(0编辑  收藏  举报

1. 声明变量们;

2. 指出变量起始位置;

3. 遍历并获取变量; 

4. 结束变量们的解析。

void CSkeletalViewerApp::Nui_DrawSkeletonSegment( NUI_SKELETON_DATA * pSkel, int numJoints, ... )
{
    va_list vl; 
// 声明参数列表
    va_start(vl,numJoints); // 声明变长参数从numJoints后开始
    POINT segmentPositions[NUI_SKELETON_POSITION_COUNT];

    
for (int iJoint = 0; iJoint < numJoints; iJoint++)
    {
        
// 取出下一个变长参数,将其看作NUI_SKELETON_POSITION_INDEX类型
        NUI_SKELETON_POSITION_INDEX jointIndex = va_arg(vl,NUI_SKELETON_POSITION_INDEX);
        segmentPositions[iJoint].x 
= m_Points[jointIndex].x;
        segmentPositions[iJoint].y 
= m_Points[jointIndex].y;
    }

    Polyline(m_SkeletonDC, segmentPositions, numJoints);

    va_end(vl); 
// 结束