Ok, maybe you can grasp the concept of 3D hit testing without a full blown demo.
This is the general idea on how to perform selection testing using the feedback buffer.
Code:
   POINT cursor;
   GetCursorPos(&cursor);

   int viewport[4];
   glGetIntegerv(GL_VIEWPORT, viewport);

   int width = viewport[2] - viewport[0];
   int height = viewport[3] - viewport[1];

   unsigned buffer[512];
   glSelectBuffer(512, buffer);

   glRenderMode(GL_SELECT);
   glInitNames();
   glPushName(0);

   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadIdentity();

   gluPickMatrix((double)cursor.x, (double)(viewport[3] - cursor.y), 1.0, 1.0, viewport);

   float aspect = 1.0;

   if(height)
      aspect = (float)(width / height);

   // TODO: set *** values to match your perspective.
   gluPerspective(***, aspect, ***, ***);

   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();

   // TODO: render object here...
   // (including local transforms)

   glMatrixMode(GL_PROJECTION);
   glPopMatrix();
   glMatrixMode(GL_MODELVIEW);
   glPopMatrix();

   INT hits = glRenderMode(GL_RENDER);

   if(hits > 0)
   {
      // TODO: handle situation here.
      // buffer now contains data about object.
      // see glSelectBuffer for details.
   }
Go ahead and toy with this code to make it fit in your app.
If you are not farmilliar with some of these functions, look them up on msdn or in the redbook. (the redbook and bluebook are nice to have around)