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