WebBrowser Control
Paul Verrier -- paul.verrier@bbsrc.ac.uk Tuesday, January 21, 1997 Environment: VC++4.2b, Win95 When the IE3.0 WebBrowser Control is inserted into my project using the Developer Studio, as expected the wrapper class is created, in my case CWebBrowser.cpp / .h. I get some strange comments from Developer Studio placed in the wrapper code - Some functions are not emitted because of incompatible bits - see extract below // method 'QueryInterface' not emitted because of invalid return type or parameter type unsigned long AddRef(); unsigned long Release(); // method 'GetTypeInfoCount' not emitted because of invalid return type or parameter type // method 'GetTypeInfo' not emitted because of invalid return type or parameter type // method 'GetIDsOfNames' not emitted because of invalid return type or parameter type // method 'Invoke' not emitted because of invalid return type or parameter type void GoBack(); void GoForward(); Now, I know that there has been comment that ActiveX and VC++4.2b has problems, but how can I get a call into QueryInterface() without the wrapper being completed. Is there a way of doing the job properly? Anyone know what should be there? Apart from these little problems, everything else seems to work in OK with my MFC based app. Any help gratefully received. Paul.verrier@bbsrc.ac.uk
ens@ORION.cb.att.com Thursday, January 23, 1997 [Mini-digest: 2 responses] broswer.GetControlUnknown->QueryInterface(...) Ed Schiebel AT&T Network and Computing Services eschiebel@att.com >---------- >From: Paul Verrier[SMTP:paul.verrier@bbsrc.ac.uk] >Sent: Tuesday, January 21, 1997 4:44 AM >To: mfc-l@netcom.com >Subject: WebBrowser Control > >Environment: VC++4.2b, Win95 > >When the IE3.0 WebBrowser Control is inserted into my project using the >Developer Studio, as expected the wrapper class is created, in my case >CWebBrowser.cpp / .h. I get some strange comments from Developer Studio >placed >in the wrapper code - Some functions are not emitted because of incompatible >bits - see extract below > > // method 'QueryInterface' not emitted because of invalid return type >or parameter type > unsigned long AddRef(); > unsigned long Release(); > // method 'GetTypeInfoCount' not emitted because of invalid return type >or parameter type > // method 'GetTypeInfo' not emitted because of invalid return type or >parameter type > // method 'GetIDsOfNames' not emitted because of invalid return type or >parameter type > // method 'Invoke' not emitted because of invalid return type or >parameter type > void GoBack(); > void GoForward(); > >Now, I know that there has been comment that ActiveX and VC++4.2b has >problems, >but how can I get a call into QueryInterface() without the wrapper being >completed. Is there a way of doing the job properly? Anyone know what should >be >there? > >Apart from these little problems, everything else seems to work in OK with my >MFC based app. > >Any help gratefully received. > >Paul.verrier@bbsrc.ac.uk > > -----From: "Mike Lechner"---------- From: owner-mfc-l@majordomo.netcom.com on behalf of Paul Verrier Sent: Tuesday, January 21, 1997 2:44 AM To: mfc-l@netcom.com Subject: WebBrowser Control [snip] >>>how can I get a call into QueryInterface() without the wrapper being completed. Is there a way of doing the job properly? Anyone know what should be there?<<< Here's what I do...Note that fBrowser is a CWebBrowser. LPDISPATCH disp = fBrowser.GetDocument (); if (disp) { LPOLECOMMANDTARGET target; HRESULT result = disp->QueryInterface (IID_IOleCommandTarget, (void **) &target); disp->Release (); if (result == S_OK) target->Exec... else if (result == E_NOINTERFACE) TRACE ("Interface not supported.\n"); target->Release (); } Mike
Mike Blaszczak -- mikeblas@nwlink.com Saturday, January 25, 1997 At 09:44 1/21/97 +0000, Paul Verrier wrote: >Environment: VC++4.2b, Win95 >When the IE3.0 WebBrowser Control is inserted into my project using the >Developer Studio, as expected the wrapper class is created, in my case >CWebBrowser.cpp / .h. I get some strange comments from Developer Studio placed >in the wrapper code - Some functions are not emitted because of incompatible >bits - see extract below I can't reproduce the problem you describe. I have IE 3.01 installed, though, and not IE 3.00. The IDE is just ripping through the type library built into the object. It emits code based on the parameter lists and data types found in the type library, which is intended to let the object describe itself to other programs at runtime--exactly what the IDE needs. It seems strange that functions named QueryInterface() and Invoke() and GetIDsOfNames() would be a part of the dispatch interface implemented by the control. They're a part of the IDispatch implementation, not a part of the exposed methods. It seems like you might have an outdated or corrupt copy of the control. The wrapper class given to you is intended to wrap the IDispatch interface of the control, not the IUnknown of the control. >Now, I know that there has been comment that ActiveX and VC++4.2b has problems, >but how can I get a call into QueryInterface() without the wrapper being >completed. Is there a way of doing the job properly? Anyone know what should be >there? If you want to diddle with the underlying OLE object directly, you need to do get a pointer to it by calling GetControlUnkown(). Then, do whatever you'd like against that IUnknown pointer: CWebBrowser* pBrowser = (CWebBrowser*) GetDlgItem(IDC_EXPLORER1); ASSERT(pBrowser != NULL); LPUNKNOWN pUnk = pBrowser->GetControlUnknown(); LPFOO pFoo = NULL; // the IFoo interface if (SUCCEEDED(m_pUnk->QueryInterface(IID_IFoo, (LPVOID*)&pFoo))) { pFoo->party(); pFoo->Release(); // maybe later } .B ekiM http://www.nwlink.com/~mikeblas/ <-- trip report central! 95 Honda VFR-750F / 88 Yamaha FZ-700 (damaged) / 94 Mazda RX-7 Serial #00050! / AMA - HRC - VFROC / Wang Dang Wankel I am bored of this talk. It is time now for the dancing! These words are my own - I do not speak on behalf of Microsoft.
| Вернуться в корень Архива |