1 添加对象的时候有个选项是IE对象支持.
2 这个我都是手动添加的,也有办法不这样做不过比较麻烦.
3 包含atlstr.h
4 $(VCInstallDir)PlatformSDK\include这个是默认就有的
5 这个不清楚.
6 这个一般的打包工具都支持com dll很方便的.

解决方案 »

  1.   

    楼上的兄弟,非常感谢您!按您的指点,我尝试了一下,问题3非常完美的解决了,不过其他几个问题还是有疑问:
    1.使用向导添加ATL简单对象时,是有一个 IObjectWithSite(IE对象支持) 的复选框,不过勾中后,仅是使生成的COM对象从 IObjectWithSiteImpl 继承了而已,并不会增加从 IDispEventSimpleImpl 的继承。
    如 PIEHelper 的示例 :
    class ATL_NO_VTABLE CIEHlprObj : 
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CIEHlprObj, &CLSID_IEHlprObj>,
    public IObjectWithSiteImpl<CIEHlprObj>,
    public IDispEventSimpleImpl<ID_BROWSER, CIEHlprObj, &DIID_DWebBrowserEvents2>,
    public IIEHlprObj我需要的就是 public IDispEventSimpleImpl<ID_BROWSER, CIEHlprObj, &DIID_DWebBrowserEvents2>, 和其相关的引用文件。(正是因为我自己添加这行代码编译不过,所以想用向导,如果能指点怎么手工添加也好)2.同上4.$(VCInstallDir)PlatformSDK\include这个是 在 “WIN32平台” 默认就有的,但是在 “Windows Mobile 6 Professional” 平台下是没有的,但偏偏 exdisp.h 和 Mshtml.h 只在这个目录下,我一旦添加了该目录,甚至直接写完整路径引用这俩文件,都不行,编译狂报错,如下:
    1>E:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\lzexpand.h(99) : error C2061: syntax error : identifier 'LPOFSTRUCT'
    1>E:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\lzexpand.h(106) : error C2061: syntax error : identifier 'LPOFSTRUCT'
    1>E:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\exdisp.h(273) : error C2011: 'CommandStateChangeConstants' : 'enum' type redefinition
    1>        E:\Program Files\Windows Mobile 6 SDK\PocketPC\include\ARMV4I\piedocvw.h(113) : see declaration of 'CommandStateChangeConstants'
    1>E:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\exdisp.h(280) : error C2011: 'SecureLockIconConstants' : 'enum' type redefinition
    1>        E:\Program Files\Windows Mobile 6 SDK\PocketPC\include\ARMV4I\piedocvw.h(120) : see declaration of 'SecureLockIconConstants'
    1>e:\program files\microsoft visual studio 8\vc\platformsdk\include\dimm.h(294) : error C2371: 'INPUTCONTEXT' : redefinition; different basic types
    1>        E:\Program Files\Windows Mobile 6 SDK\PocketPC\include\ARMV4I\imm.h(793) : see declaration of 'INPUTCONTEXT'
    1>e:\program files\microsoft visual studio 8\vc\platformsdk\include\dimm.h(305) : error C2371: 'IMEINFO' : redefinition; different basic types
    1>        E:\Program Files\Windows Mobile 6 SDK\PocketPC\include\ARMV4I\imm.h(804) : see declaration of 'IMEINFO'5.我看了 C# 的代码,这个 Phone 类型,也不知道是从哪引的,好像不是 微软提供的类库里的,郁闷,不知VC怎么才能实现同样的功能呢?6.我以前做 MFC 都是用的 NSIS 打包的,您说的一般的打包工具支持 COM DLL,不知道在 windows mobile 6.0 下一样可以安装 NSIS 生成的打包文件么?非常感谢!
      

  2.   

    IDispEventSimpleImpl 需要自己手工加上去至于mobile平台相关的东西就就不大清楚了:D
      

  3.   

    您好,关于问题1,是这样的;
    我手工添加了 IDispEventSimpleImpl ,但是需要参数 3 是 &DIID_DWebBrowserEvents2,而 DIID_DWebBrowserEvents2 是在 exdisp.h 里定义的,而 exdisp.h 是在 $(VCInstallDir)PlatformSDK\include 目录下的,于是问题就回到了上面的问题4了,一增加这个目录,编译就报错。不知是不是现在 ATL 式微,ATL/ActiveX/COM 板块社区的人气好少啊,也只有您帮我解答问题了,真是非常感谢您!我现在的情况是,我手边有一个 Win32 平台的 BHO 项目,老大需要我把它移植到 Windows Mobile 上,于是我就参考 Windows Mobile SDK 自带的 BHO 示例 PIEHelper ,和现有的 Win32 的 BHO 项目,一点一点改,改的好痛苦,随便移过去一点点代码,就编译不过去,看了几天的书,也帮助不大。网上的示例找过不少,也是各种各样的,大多数在 Windows Mobile 平台都编译不过,唉,会者不难,难者不会啊,呵呵
      

  4.   

    问题 6 我自己已经搞定了 ^_^原来 VS2005 自带有这个功能,可以创建一个 “其他项目类型=》安装和部署=》智能设备CAB” 项目,然后在里面添加要安装的文件和要注册的注册表内容即可。卸载部分根本不用管,Windows Mobile 自己会搞定的,这个可比 NSIS 方便多啦,呵呵问题 6 的分数均分到其他问题上,呵呵
      

  5.   

    谢谢,以上问题我都已经解决了,可惜又出现了新的问题:匹配号码时我需要使用正则表达式,但是很可惜 CAtlregexp 这个类在 WINCE 平台上不支持,不知各位大侠有什么办法呢?非常感谢!