GtkPlug and GtkSocket mechanism

Mike Hearn mike at
Thu Aug 28 06:31:11 CDT 2003

On Thu, 2003-08-28 at 01:26, Evalet Olivier wrote:
> I would like to know if it is possible to integrate the GtkSocket
> mechanism in wine. (To embed activex component in a gtk application.)

I've thought about this before. The primary problem is that you'd need
some custom IPC mechanism, as simply instantiating an ActiveX control
and embedding it in a window isn't terribly useful, you generally want
to call its methods and set its properties.

I've pondered using DBUS for that. A simple DBUS<->COM bridge would be
handy, though COM doesn't really map to DBUS very well, so it wouldn't
be quite the same as using normal COM/DCOM.

> I do not know exactly how to proceed, I need more informations:

I already put some basic support for processing XEMBED messages into
Wine with my system tray patch, that isn't merged yet. You might want to
take a look at that first.

> - do I must embed GtkSocket code in wine?

No, there's no need for that, XEMBED is well documented and can be
implemented in Wine directly.

> - do I must synchronize GtkWidget and HWND?

You don't need to link against GTK to do what you want.

> For the ActiveX, I use, with a dynamic link, the atl.dll to embed
> components. It is easy and It works with HTML editor and others
> stuffs... But I dont know if this is the right way to embed components?

The ATL is a C++ toolkit, beyond that I know little about it. The
easiest way to embed an ActiveX control is to turn a program into a
WineLib app. At that point the problem becomes one of internally using
XEMBED to synchronize the Wine toolkit and GTK. That sort of thing
shouldn't be very hard, I expect a simple Wine extension to Win32 would
work here (setting an extended window style or something).

thanks -mike

More information about the wine-devel mailing list