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