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

Code that compiles in VS 6 doens't work in VS 2005
AngRudy
Joe Cotugno
For general how to questions, use the newsgroups at http://msdn.microsoft.com/newsgroups
Thanks, Ayman Shoukry VC++ Teammihai.manole77
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++ TeamPaulDevine
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
- 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 :-)