Code that compiles in VS 6 doens't work in VS 2005

I'm a little frusterated that the VS 8.0 C++ compiler seems to make so many things that worked with the 6.0 compiler cease to work. Many thanks in advanace from a C++ and VS novice!

Anyways, I'm just trying to render html wtihin my app, and I'm using the rather cool (http://www.codeproject.com/com/cwebpage.asp) to host MSHTML... but simply trying to get the dll.c file to compile, I run into two errors...

f:\visual studio 2005\projects\cwebpage(2)\dll\dll.c(83) : error C2011: 'IHTMLWindow3Vtbl' : 'struct' type redefinition
e:\program files\microsoft visual studio 8\vc\platformsdk\include\mshtmlc.h(78746) : see declaration of 'IHTMLWindow3Vtbl'
f:\visual studio 2005\projects\cwebpage(2)\dll\dll.c(206) : error C2011: 'IHTMLWindow3' : 'struct' type redefinition
e:\program files\microsoft visual studio 8\vc\platformsdk\include\mshtmlc.h(78856) : see declaration of 'IHTMLWindow3'

I've pasted in the code below:

#if defined(VISUAL_C)
#pragma data_seg("Shared")
#endif

typedef interface IHTMLWindow3 IHTMLWindow3;

(LINE 83 ERROR) typedef struct IHTMLWindow3Vtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(IHTMLWindow3 __RPC_FAR * This, REFIID riid, void __RPC_FAR *__RPC_FAR *ppvObject);
ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(IHTMLWindow3 __RPC_FAR * This);
ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(IHTMLWindow3 __RPC_FAR * This);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(IHTMLWindow3 __RPC_FAR * This, UINT __RPC_FAR *pctinfo);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(IHTMLWindow3 __RPC_FAR * This, UINT iTInfo, LCID lcid, ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(IHTMLWindow3 __RPC_FAR * This, REFIID riid, LPOLESTR __RPC_FAR *rgszNames, UINT cNames, LCID lcid, DISPID __RPC_FAR *rgDispId);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(IHTMLWindow3 __RPC_FAR * This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS __RPC_FAR *pDispParams, VARIANT __RPC_FAR *pVarResult, EXCEPINFO __RPC_FAR *pExcepInfo, UINT __RPC_FAR *puArgErr);
/*
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *item )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *pvarIndex, VARIANT __RPC_FAR *pvarResult);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_length )(IHTMLWindow3 __RPC_FAR * This, long __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_frames )(IHTMLWindow3 __RPC_FAR * This, IHTMLFramesCollection2 __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_defaultStatus )(IHTMLWindow3 __RPC_FAR * This, BSTR v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_defaultStatus )(IHTMLWindow3 __RPC_FAR * This, BSTR __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_status )(IHTMLWindow3 __RPC_FAR * This, BSTR v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_status )(IHTMLWindow3 __RPC_FAR * This, BSTR __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *setTimeout )(IHTMLWindow3 __RPC_FAR * This, BSTR expression, long msec, VARIANT __RPC_FAR *language, long __RPC_FAR *timerID);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *clearTimeout )(IHTMLWindow3 __RPC_FAR * This, long timerID);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *alert )(IHTMLWindow3 __RPC_FAR * This, BSTR message);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *confirm )(IHTMLWindow3 __RPC_FAR * This, BSTR message, VARIANT_BOOL __RPC_FAR *confirmed);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *prompt )(IHTMLWindow3 __RPC_FAR * This, BSTR message, BSTR defstr, VARIANT __RPC_FAR *textdata);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Image )(IHTMLWindow3 __RPC_FAR * This, IHTMLImageElementFactory __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_location )(IHTMLWindow3 __RPC_FAR * This, IHTMLLocation __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_history )(IHTMLWindow3 __RPC_FAR * This, IOmHistory __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *close )(IHTMLWindow3 __RPC_FAR * This);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_opener )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_opener )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_navigator )(IHTMLWindow3 __RPC_FAR * This, IOmNavigator __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_name )(IHTMLWindow3 __RPC_FAR * This, BSTR v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_name )(IHTMLWindow3 __RPC_FAR * This, BSTR __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_parent )(IHTMLWindow3 __RPC_FAR * This, IHTMLWindow3 __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *open )(IHTMLWindow3 __RPC_FAR * This, BSTR url, BSTR name, BSTR features, VARIANT_BOOL replace, IHTMLWindow3 __RPC_FAR *__RPC_FAR *pomWindowResult);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_self )(IHTMLWindow3 __RPC_FAR * This, IHTMLWindow3 __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_top )(IHTMLWindow3 __RPC_FAR * This, IHTMLWindow3 __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_window )(IHTMLWindow3 __RPC_FAR * This, IHTMLWindow3 __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *navigate )(IHTMLWindow3 __RPC_FAR * This, BSTR url);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onfocus )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onfocus )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onblur )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onblur )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onload )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onload )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onbeforeunload )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onbeforeunload )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onunload )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onunload )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onhelp )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onhelp )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onerror )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onerror )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onresize )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onresize )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onscroll )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onscroll )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_document )(IHTMLWindow3 __RPC_FAR * This, IHTMLDocument2 __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_event )(IHTMLWindow3 __RPC_FAR * This, IHTMLEventObj __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get__newEnum )(IHTMLWindow3 __RPC_FAR * This, IUnknown __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *showModalDialog )(IHTMLWindow3 __RPC_FAR * This, BSTR dialog, VARIANT __RPC_FAR *varArgIn, VARIANT __RPC_FAR *varOptions, VARIANT __RPC_FAR *varArgOut);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *showHelp )(IHTMLWindow3 __RPC_FAR * This, BSTR helpURL, VARIANT helpArg, BSTR features);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_screen )(IHTMLWindow3 __RPC_FAR * This, IHTMLScreen __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Option )(IHTMLWindow3 __RPC_FAR * This, IHTMLOptionElementFactory __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *focus )(IHTMLWindow3 __RPC_FAR * This);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_closed )(IHTMLWindow3 __RPC_FAR * This, VARIANT_BOOL __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *blur )(IHTMLWindow3 __RPC_FAR * This);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *scroll )(IHTMLWindow3 __RPC_FAR * This, long x, long y);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_clientInformation )(IHTMLWindow3 __RPC_FAR * This, IOmNavigator __RPC_FAR *__RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *setInterval )(IHTMLWindow3 __RPC_FAR * This, BSTR expression, long msec, VARIANT __RPC_FAR *language, long __RPC_FAR *timerID);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *clearInterval )(IHTMLWindow3 __RPC_FAR * This, long timerID);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_offscreenBuffering )(IHTMLWindow3 __RPC_FAR * This, VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_offscreenBuffering )(IHTMLWindow3 __RPC_FAR * This, VARIANT __RPC_FAR *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *execScript )(IHTMLWindow3 __RPC_FAR * This, BSTR code, BSTR language, VARIANT __RPC_FAR *pvarRet);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *toString )(IHTMLWindow3 __RPC_FAR * This, BSTR __RPC_FAR *String);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *scrollBy )(IHTMLWindow3 __RPC_FAR * This, long x, long y);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *scrollTo )(IHTMLWindow3 __RPC_FAR * This, long x, long y);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *moveTo )(IHTMLWindow3 __RPC_FAR * This, long x, long y);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *moveBy )(IHTMLWindow3 __RPC_FAR * This, long x, long y);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *resizeTo )(IHTMLWindow3 __RPC_FAR * This, long x, long y);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *resizeBy)(IHTMLWindow3 __RPC_FAR * This, long x, long y);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_external )(IHTMLWindow3 __RPC_FAR * This, IDispatch __RPC_FAR *__RPC_FAR *p);
*/

HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_screenLeft)(IHTMLWindow3 __RPC_FAR * This,
/* [out][retval] */ long *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_screenTop)(IHTMLWindow3 __RPC_FAR * This,
/* [out][retval] */ long *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *attachEvent)(IHTMLWindow3 __RPC_FAR * This,
/* [in] */ BSTR event,
/* [in] */ IDispatch *pDisp,
/* [out][retval] */ VARIANT_BOOL *pfResult);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *detachEvent)(IHTMLWindow3 __RPC_FAR * This,
/* [in] */ BSTR event,
/* [in] */ IDispatch *pDisp);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *setTimeout)(IHTMLWindow3 __RPC_FAR * This,
/* [in] */ VARIANT *expression,
/* [in] */ long msec,
/* [in][optional] */ VARIANT *language,
/* [out][retval] */ long *timerID);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *setInterval)(IHTMLWindow3 __RPC_FAR * This,
/* [in] */ VARIANT *expression,
/* [in] */ long msec,
/* [in][optional] */ VARIANT *language,
/* [out][retval] */ long *timerID);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *print)(IHTMLWindow3 __RPC_FAR * This);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onbeforeprint)(IHTMLWindow3 __RPC_FAR * This,
/* [in] */ VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onbeforeprint)(IHTMLWindow3 __RPC_FAR * This,
/* [out][retval] */ VARIANT *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_onafterprint)(IHTMLWindow3 __RPC_FAR * This,
/* [in] */ VARIANT v);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_onafterprint)(IHTMLWindow3 __RPC_FAR * This,
/* [out][retval] */ VARIANT *p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_clipboardData)(IHTMLWindow3 __RPC_FAR * This,
/* [out][retval] */ void **p);
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *showModelessDialog)(IHTMLWindow3 __RPC_FAR * This,
/* [in][defaultvalue] */ BSTR url,
/* [in][optional] */ VARIANT *varArgIn,
/* [in][optional] */ VARIANT *options,
/* [out][retval] */ IHTMLWindow2 **pDialog);
END_INTERFACE
} IHTMLWindow3Vtbl;

(LINE 206 ERROR)interface IHTMLWindow3
{
CONST_VTBL struct IHTMLWindow3Vtbl1 __RPC_FAR *lpVtbl;
};

#if defined(VISUAL_C)
#pragma data_seg()
#endif



Answer this question

Code that compiles in VS 6 doens't work in VS 2005

  • AngRudy

    Ayman - what's the distinction What questions are OK here, and what questions should be in the newsgroups I thought all the questions here were 'how to' questions

  • Joe Cotugno

    For general how to questions, use the newsgroups at http://msdn.microsoft.com/newsgroups

    Thanks,
    Ayman Shoukry
    VC++ Team


  • mihai.manole77

    I much apprecitae the suggestion cgraus:

    I'm basiclly looking for the easiest way to implement the following: I want to read .html files on disk and display them within my own application (not a MFC app). I don't want IE to display the html file, I want to display it myself in my own app....

    In the MSDN forum you sent me, it sounds like it is controlling IE to do this...

    Is there a nice & easy way to do what I want to do


    Thanks!

  • KarimRadi

    // I'm a little frusterated that the VS 8.0 C++ compiler seems to make so many things that worked with the 6.0 compiler cease to work.

    You're jumping three iterations of a compiler that was terrible, and has made major leaps in standards conformance. VC2005 from VC2003 alone had 25 odd breaking changes, all to conform to the C++ standard.

    Have you searched your project to see if these structs are in fact defined more than once



  • Steve J Wright

    If the question is a general how to problem (ie. Seaching for algorithms) then the newsgroups are more appropriate. If they are regarding a specific issue then the forums should be helpful.

    Thanks,
    Ayman Shoukry
    VC++ Team


  • PaulDevine

    IE can be hosted within your app. That's essentially what any solution is going to do. Writing your own HTML parser is really the only other option.



  • Bart from SLC

    So as far as are they defined more than once in the project:
    - They are only defined in the snipet I pasted in.
    - I'm also including libraries odbc32.lib odbccp32.lib libc.lib.

    & including files:
    #include <windows.h>
    #include <exdisp.h> /* Defines of stuff like IWebBrowser2. This is an include file with Visual C 6 and above */
    #include <mshtml.h> /* Defines of stuff like IHTMLDocument2. This is an include file with Visual C 6 and above */
    #include <mshtmhst.h> /* Defines of stuff like IDocHostUIHandler. This is an include file with Visual C 6 and above */

    I have no idea why the compiler is complaining about this. With regards to 6.0 -> 8.0 compiler... that's too bad... :(

  • Ajey

    I'd suggest looking at this:

    http://msdn.microsoft.com/library/default.asp url=/workshop/browser/mshtml/tutorials/sink.asp

    instead of trying to do it using C.

    And I can understand what you mean, but it's really quite excellent. VC6 is a *terrible* C++ compiler, VC2005 is an excellent one :-)



  • Code that compiles in VS 6 doens't work in VS 2005