use of undefined type IShellWindows解决思路

use of undefined type IShellWindows
在网上找一段找码,编译CComPtr<IShellWindows> spShellWin;的时候不能通过
错误信息:

--------------------Configuration: setwebtext - Win32 Debug--------------------
Compiling...
setwebtext.cpp
d:\program files (x86)\microsoft visual studio\vc98\atl\include\atlbase.h(445) : error C2027: use of undefined type 'IShellWindows'
        d:\program files (x86)\microsoft visual studio\vc98\include\comdef.h(452) : see declaration of 'IShellWindows'
        d:\program files (x86)\microsoft visual studio\vc98\atl\include\atlbase.h(443) : while compiling class-template member function '__thiscall ATL::CComPtr<struct IShellWindows>::~ATL::CComPtr<struct IShellWindows>(void)'
d:\program files (x86)\microsoft visual studio\vc98\atl\include\atlbase.h(445) : error C2227: left of '->Release' must point to class/struct/union
        d:\program files (x86)\microsoft visual studio\vc98\atl\include\atlbase.h(443) : while compiling class-template member function '__thiscall ATL::CComPtr<struct IShellWindows>::~ATL::CComPtr<struct IShellWindows>(void)'
执行 cl.exe 时出错.

setwebtext.exe - 1 error(s), 0 warning(s)





--------------------------
代码
#include "stdafx.h"
#include "afx.h"
#include <atlbase.h>
#include <mshtml.h>
#include <winuser.h>
#include <comdef.h>
#include <string>

void EnumIE(void);//处理网页
void EnumFrame(IHTMLDocument2 * pIHTMLDocument2);//处理框架
void EnumForm(IHTMLDocument2 * pIHTMLDocument2);//处理表单

CComModule _Module;  //使用CComDispatchDriver ATL的智能指针,此处必须声明
#include <atlcom.h>
void EnumField(CComDispatchDriver spInputElement,CString ComType,CString ComVal,CString ComName);//处理表单域

void EnumIE(void)
{
CComPtr<IShellWindows> spShellWin;
//HRESULT hr=spShellWin.CoCreateInstance(CLSID_ShellWindows);
}
------最佳解决方案--------------------

#include <Exdisp.h>

------其他解决方案--------------------
说的是 IShellWindows 没有定义,是不是忘记什么头文件了?
------其他解决方案--------------------
加上楼上的头文件。