I came across this great article - may be of interest to some people:
Introduction
There are numerous examples that demonstrate how to use/create
COM/OLE/ActiveX components. But these examples typically use Microsoft
Foundation Classes (MFC), .NET, C#, WTL, or at least ATL, because those
frameworks have pre-fabricated "wrappers" to give you some boilerplate code.
Unfortunately, these frameworks tend to hide all of the low level details
from a programmer, so you never really do learn how to use COM components
per se. Rather, you learn how to use a particular framework riding on top of
COM.
If you're trying to use plain C, without MFC, WTL, .NET, ATL, C#, or even
any C++ code at all, then there is a dearth of examples and information on
how to deal with COM objects. This is the first in a series of articles that
will examine how to utilize COM in plain C, without any frameworks.
http://www.codeproject.com/com/com_in_c1.asp
Cheers,
jez.