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

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); 
// 结束


原文地址:https://www.cnblogs.com/mumuliang/p/2100829.html