Hello, I'm looking to create a default handler for these interfaces: - IStorage - IOleInPlaceFrame not - IOleClientSite - IOleInPlaceSite not - IOleContainer not
The reason of this... I just want to display an OLE component without binding with the native atl.dll. I have found a pure win32 example to implement this.
So, If I want to use a "null" IStorage default handler, does there already exist or I must implement it?
As I can see in the source code, OLE is really hard for my head.
Regards, Olivier
On Thu, 20 Nov 2003 00:53:56 +0100, Sir olivier evalet scribed thus:
Hello, I'm looking to create a default handler for these interfaces:
- IStorage
Hi,
I think we already have an implementation for the OLE provided IStorage implementation. The others I'm not sure about.
The reason of this... I just want to display an OLE component without binding with the native atl.dll. I have found a pure win32 example to implement this.
I don't understand, sorry. ATL is a set of C++ convenience wrappers around COM and is redistributable. All the infrastructure for displaying embedded OLE/AcitveX controls is already in Wine... do you think we're missing something?
So, If I want to use a "null" IStorage default handler, does there already exist or I must implement it?
Does OLE provide such a beast? I've never encountered it if so, only the standard compound document IStorage impl. If Windows provides an IStorage that goes to /dev/null we should implement that too.
As I can see in the source code, OLE is really hard for my head.
Yes, it can be confusing.
thanks -mike
Hello,
I don't understand, sorry. ATL is a set of C++ convenience wrappers around COM and is redistributable. All the infrastructure for displaying embedded OLE/AcitveX controls is already in Wine... do you think we're missing something?
Humm, I don't know, I have a dll "atl.dll" with this fonction: void AtlAxGetControl( HWND h, IUnknown** pp);
With this fonction it is really easy to embed controls in a windows. Actually I try to have the same behavior without using the native dll. I have found an example which describe howto embed IE in a HWND. This example implement the following code:
// OleCreate // site is an implementation of IOleClientSite, IOleInPlaceSite // storage is an implementation of IStorage // mpWebObject is an implementation of IOleContainer
OleCreate(CLSID_WebBrowser,IID_IOleObject,OLERENDER_DRAW,0,&site,&storage,(void**)&mpWebObject); mpWebObject->SetHostNames(L"Web Host",L"Web View"); RECT rect; GetClientRect(hwnd,&rect);
// DoVerb embed the component in the hwnd_parent mpWebObject->DoVerb(OLEIVERB_SHOW,NULL,&site,-1,hwnd_parent,&rect);
I don't know how to start correctly my code to implement this in wine? There are a lot of interface just for displaying an ActiveX. I think that I must implement all interfaces but I don't know how to begin... For example, the object "site" is an implementation of IOleClientSite and IOleInPlaceSite, I have read the wine documentation and I don't see how to implement multiple OLE interfaces in C.
Merci, Olivier