请教,XMLHTTPRequest 在VC2008 SP1里面的头文件是什么

请问,XMLHTTPRequest 在VC2008 SP1里面的头文件是什么啊
请问,XMLHTTPRequest 在VC2008 SP1里面的头文件是什么啊,都需要加载哪写代码能引入XMLHTTP方法,比如:
#import
import ...
import ... 请教大侠们

------解决方案--------------------
http://www.example-code.com/vcpp/http_xmlhttp.asp
------解决方案--------------------
C/C++ code

BEGIN_DISPATCH_MAP(CXMLDOMSamples, CCmdTarget)
   DISP_FUNCTION_ID(CXMLDOMSamples, "Ready State Event Handler", 
   DISPID_XMLDOMEVENT_ONREADYSTATECHANGE, DOMDocCheckState, VT_EMPTY, 0)
END_DISPATCH_MAP()

class CXMLDOMSamples : public CCmdTarget
{
private:
   HRESULT m_hr;
   IXMLDOMDocument* m_pIXMLDOMDocument;
   BSTR m_bstrXMLDocName;
   DWORD m_pdwCookie;
public:
   BOOL AdviseConnectionPoint(BOOL bAdvise = TRUE);
   void Caller();
   BOOL DOMDocLoadLocation();
   BOOL DOMDocStateChangeSetup();
   void DOMDocCheckState();
};

// Assumptions   
// m_pIXMLDOMDocument has already been initialized (a DOMDocument 
// object has been created).
// Automation is enabled for the class to enable it to connect 
// to the Connection point (DIID_XMLDOMDocumentEvents).

void CXMLDOMSamples::Caller()
{
   try
   {
   m_bstrXMLDocName = ::SysAllocString(_T("http://MyServer/sample.xml"));
   DOMDocStateChangeSetup();
   DOMDocLoadLocation();
   ::SysFreeString(m_bstrXMLDocName);
   m_bstrXMLDocName = NULL;
}
   catch(...)
   {
      if(m_bstrXMLDocName)
      ::SysFreeString(m_bstrXMLDocName);
      DisplayErrorToUser();
   } 
}
BOOL CXMLDOMSamples::AdviseConnectionPoint(BOOL bAdvise)
{
   BOOL bResult = FALSE;
   try
   {
      IConnectionPointContainer *pIConnectionPointContainer = NULL;
      IConnectionPoint *pCP = NULL;

      m_hr = m_pIXMLDOMDocument->QueryInterface    
      (IID_IConnectionPointContainer,(void**)&pIConnectionPointContainer);
      SUCCEEDED(m_hr) ? 0 : throw m_hr;

      If(pIConnectionPointContainer)
      {
         m_hr = pIConnectionPointContainer->FindConnectionPoint 
               (DIID_XMLDOMDocumentEvents, &pCP);
         SUCCEEDED(m_hr) ? 0 : throw m_hr;
         if(SUCCEEDED(m_hr) && pCP)
         {
            if(bAdvise)
               m_hr = pCP->Advise(GetIDispatch(TRUE), &m_pdwCookie);
            else
               m_hr = pCP->Unadvise(m_pdwCookie);
            bResult = SUCCEEDED(m_hr) ? TRUE : FALSE;
            pCP->Release();
            pCP = NULL;
         }
         pIConnectionPointContainer->Release();
         pIConnectionPointContainer = NULL;
      }
   }
   catch(...)
   {
      if(pIConnectionPointContainer)
         pIConnectionPointContainer->Release();
      if(pCP)
         pCP->Release();
      DisplayErrorToUser();
   }
   return bResult;
}
BOOL CXMLDOMSamples::DOMDocStateChangeSetup()
{
   BOOL bResult = FALSE;
   try
   {
      m_hr = m_pIXMLDOMDocument->put_async(VARIANT_TRUE);
      SUCCEEDED(m_hr) ? 0 : throw m_hr;
      bResult = AdviseConnectionPoint();
   }
   catch(...)
   {
      DisplayErrorToUser();
   }
   return bResult;
}
BOOL CXMLDOMSamples::DOMDocLoadLocation()
{
   short sResult = FALSE;
   BOOL bResult = FALSE;
   try
   {
      _variant_t varString = m_bstrXMLDocName;
      m_hr = m_pIXMLDOMDocument->load(varString, &sResult);
      bResult = SUCCEEDED(m_hr) ? TRUE : FALSE;
   }
   catch(...)
   {
      DisplayErrorToUser();
   }
   return bResult;
}
void CXMLDOMSamples::DOMDocCheckState()
{
   IXMLDOMParseError *pIParseError = NULL;
   long value;

   try
   {
      m_hr = m_pIXMLDOMDocument->get_readyState(&value);
      SUCCEEDED(m_hr) ? 0 : throw m_hr;
      if(value == 4 )
      {
         m_hr = m_pIXMLDOMDocument->get_parseError(&pIParseError);
         SUCCEEDED(m_hr) ? 0 : throw m_hr;
         m_hr = pIParseError->get_errorCode(&value);
         pIParseError->Release();
         pIParseError=NULL;
         if(!SUCCEEDED(m_hr))
         {
            throw m_hr;
         }
         m_strOutput = (value != 0) ? _T("Load Error") : _T("Load 
            Succeeded");
      }
   }
   catch(...)
   {
      if(pIParseError)
         pIParseError->Release();
      DisplayErrorToUser();
   }
}