title: Problems to start using openNi
body: <p>I just installed the openNi libraries and make my kinect work on my computer.
  My problem is that I'm just a nov programming in c++.</p>
  
  <p>I copied the code for hand tracking from this page:</p>
  
  <p><a href="http://openni.org/Documentation/ProgrammerGuide.html" rel="nofollow">http://openni.org/Documentation/ProgrammerGuide.html</a></p>
  
  <p>and paste it in my VisualStudio11 beta project.</p>
  
  <p>It stays saying me that the variable xn is no defined... but i don't know what xn is. </p>
  
  <p>If you could please tell me how to define de variable xn in the code, or what I have to do in order to make the code works.</p>
  
  <p>ACTUALIZATION:
  this is the code, is in the page I mentioned above</p>
  
  <pre><code>#define GESTURE_TO_USE "Click"
  
  xn::GestureGenerator g_GestureGenerator;
  xn::HandsGenerator g_HandsGenerator;
  
  void XN_CALLBACK_TYPE 
  Gesture_Recognized(xn::GestureGenerator&amp; generator,
                     const XnChar* strGesture,
                     const XnPoint3D* pIDPosition,
                     const XnPoint3D* pEndPosition, void* pCookie)
  {
      printf("Gesture recognized: %s\n", strGesture);
      g_GestureGenerator.RemoveGesture(strGesture);
      g_HandsGenerator.StartTracking(*pEndPosition);
  }
  void XN_CALLBACK_TYPE
  Gesture_Process(xn::GestureGenerator&amp; generator,
                  const XnChar* strGesture,
                  const XnPoint3D* pPosition,
                  XnFloat fProgress,
                  void* pCookie)
  {}
  
  void XN_CALLBACK_TYPE
  Hand_Create(xn::HandsGenerator&amp; generator,
              XnUserID nId, const XnPoint3D* pPosition,
              XnFloat fTime, void* pCookie)
  {
    printf("New Hand: %d @ (%f,%f,%f)\n", nId,
           pPosition-&gt;X, pPosition-&gt;Y, pPosition-&gt;Z);
  }
  void XN_CALLBACK_TYPE
  Hand_Update(xn::HandsGenerator&amp; generator,
              XnUserID nId, const XnPoint3D* pPosition,
              XnFloat fTime, void* pCookie)
  {
  }
  void XN_CALLBACK_TYPE
  Hand_Destroy(xn::HandsGenerator&amp; generator,
               XnUserID nId, XnFloat fTime,
               void* pCookie)
  {
    printf("Lost Hand: %d\n", nId);
    g_GestureGenerator.AddGesture(GESTURE_TO_USE, NULL);
  }
  
  void main()
  {
  
    XnStatus nRetVal = XN_STATUS_OK;
  
    Context context;
    nRetVal = context.Init();
    // TODO: check error code
  
    // Create the gesture and hands generators
    nRetVal = g_GestureGenerator.Create(context);
    nRetVal = g_HandsGenerator.Create(context);
    // TODO: check error code
  
    // Register to callbacks
    XnCallbackHandle h1, h2;
    g_GestureGenerator.RegisterGestureCallbacks(Gesture_Recognized,
                                                Gesture_Process,
                                                NULL, h1);
    g_HandsGenerator.RegisterHandCallbacks(Hand_Create, Hand_Update,
                                           Hand_Destroy, NULL, h2);
  
    // Start generating
    nRetVal = context.StartGeneratingAll();
    // TODO: check error code
  
    nRetVal = g_GestureGenerator.AddGesture(GESTURE_TO_USE);
  
    while (TRUE)
    {
      // Update to next frame
      nRetVal = context.WaitAndUpdateAll();
      // TODO: check error code
    }
  
    // Clean up
    context.Shutdown();
  }
  </code></pre>