diff --git a/Make.rules.in b/Make.rules.in
index 9a9dad28159e24b8c5b6f4f5400ecf34916e5d67..3f760f73d9bef7e0b66287fab6e2ba8a883222b5 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -110,6 +110,7 @@ DLLS = \
 	oleaut32 \
 	olecli32 \
 	oledlg \
+	olepro32 \
 	olesvr32 \
 	psapi \
 	rasapi32 \
diff --git a/configure b/configure
index ed253ef24b64cf63b04ac42fe2f7f632ca02d0cb..c5c464f5917b9f454dfab7cf0c64353ead55fdfc 100755
--- a/configure
+++ b/configure
@@ -6162,6 +6162,7 @@ dlls/ole32/Makefile
 dlls/oleaut32/Makefile
 dlls/olecli/Makefile
 dlls/oledlg/Makefile
+dlls/olepro32/Makefile
 dlls/olesvr/Makefile
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
@@ -6373,6 +6374,7 @@ dlls/ole32/Makefile
 dlls/oleaut32/Makefile
 dlls/olecli/Makefile
 dlls/oledlg/Makefile
+dlls/olepro32/Makefile
 dlls/olesvr/Makefile
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
diff --git a/configure.in b/configure.in
index e43bd944b976361b1911f9b98e371c2a1ae89bcc..ba6346cb22501df02e62e57942bcdd300c0995f7 100644
--- a/configure.in
+++ b/configure.in
@@ -949,6 +949,7 @@ dlls/ole32/Makefile
 dlls/oleaut32/Makefile
 dlls/olecli/Makefile
 dlls/oledlg/Makefile
+dlls/olepro32/Makefile
 dlls/olesvr/Makefile
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 2b9a8a1deccb16eed4c2b5b479e733c3702dd177..00b51b7264668f6ae0986f26b14b302c19e9660c 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -23,6 +23,7 @@ DLLFILES = \
 	oleaut32/liboleaut32.@LIBEXT@ \
 	olecli/libolecli32.@LIBEXT@ \
 	oledlg/liboledlg.@LIBEXT@ \
+	olepro32/libolepro32.@LIBEXT@ \
 	olesvr/libolesvr32.@LIBEXT@ \
 	psapi/libpsapi.@LIBEXT@ \
 	rasapi32/librasapi32.@LIBEXT@ \
@@ -160,6 +161,10 @@ liboledlg.@LIBEXT@: oledlg/liboledlg.@LIBEXT@
 	$(RM) $@
 	$(LN_S) oledlg/liboledlg.@LIBEXT@ $@
 
+libolepro32.@LIBEXT@: olepro32/libolepro32.@LIBEXT@
+	$(RM) $@
+	$(LN_S) olepro32/libolepro32.@LIBEXT@ $@
+
 libolesvr32.@LIBEXT@: olesvr/libolesvr32.@LIBEXT@
 	$(RM) $@
 	$(LN_S) olesvr/libolesvr32.@LIBEXT@ $@
diff --git a/dlls/olepro32/.cvsignore b/dlls/olepro32/.cvsignore
new file mode 100644
index 0000000000000000000000000000000000000000..a462acc3f1d78c121ea604ede835fab669788050
--- /dev/null
+++ b/dlls/olepro32/.cvsignore
@@ -0,0 +1,3 @@
+*.spec.c
+Makefile
+libolepro32.so.1.0
diff --git a/dlls/olepro32/Makefile.in b/dlls/olepro32/Makefile.in
new file mode 100644
index 0000000000000000000000000000000000000000..462301e8e75a9c2949fca7d570a570a3384581e1
--- /dev/null
+++ b/dlls/olepro32/Makefile.in
@@ -0,0 +1,22 @@
+DEFS      = @DLLFLAGS@ -D__WINE__
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+LIBEXT    = @LIBEXT@
+MODULE    = olepro32
+SOVERSION = 1.0
+IMPORTS	  = oleaut32 ole32
+
+SPEC_SRCS = olepro32.spec
+
+C_SRCS = olepro32stubs.c
+
+all: lib$(MODULE).$(LIBEXT)
+
+@MAKE_RULES@
+
+clean::
+	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+
+### Dependencies:
diff --git a/dlls/olepro32/README b/dlls/olepro32/README
new file mode 100644
index 0000000000000000000000000000000000000000..1c505f2781e0590ff0bdba646cf60245745bbfd3
--- /dev/null
+++ b/dlls/olepro32/README
@@ -0,0 +1,9 @@
+29Nov99
+Sean Langley 
+
+This library (OLEPRO32.DLL) is basically a sub-set of what is in OLEAUT32.DLL.
+The main difference under Win32 is that OLEPRO32.DLL can be used
+as a type library.  There are two functions in this DLL which are already 
+implemented in Wine.  They are OleCreateFontIndirect, and OleTranslateColor.
+The spec file for both of these functions points to the functions in the
+OLEAUT32.DLL.
diff --git a/dlls/olepro32/olepro32.spec b/dlls/olepro32/olepro32.spec
new file mode 100644
index 0000000000000000000000000000000000000000..405112a5a7f58210357b308dcc40a11004e7c2b5
--- /dev/null
+++ b/dlls/olepro32/olepro32.spec
@@ -0,0 +1,14 @@
+name olepro32
+type win32
+
+@ stdcall OleIconToCursor( ptr ptr) OleIconToCursor
+@ stdcall OleCreatePropertyFrameIndirect( ptr ) OleCreatePropertyFrameIndirect
+@ stdcall OleCreatePropertyFrame( ptr long long ptr long ptr long ptr ptr long ptr ) OleCreatePropertyFrame
+@ stdcall OleLoadPicture( ptr long long ptr ptr ) OleLoadPicture
+@ stdcall OleCreatePictureIndirect( ptr ptr long ptr ) OleCreatePictureIndirect
+@ stdcall OleCreateFontIndirect( ptr ptr ptr ) OleCreateFontIndirect
+@ stdcall OleTranslateColor( long ptr ptr ) OleTranslateColor
+@ stdcall DllCanUnloadNow() OLEPRO32_DllCanUnloadNow
+@ stdcall DllGetClassObjecti( ptr ptr ptr )  OLEPRO32_DllGetClassObject
+@ stdcall DllRegisterServer() OLEPRO32_DllRegisterServer
+@ stdcall DllUnregisterServer() OLEPRO32_DllUnregisterServer
diff --git a/dlls/olepro32/olepro32stubs.c b/dlls/olepro32/olepro32stubs.c
new file mode 100644
index 0000000000000000000000000000000000000000..aa62f2f39270d2e60d033a32e56dcc46daf4626a
--- /dev/null
+++ b/dlls/olepro32/olepro32stubs.c
@@ -0,0 +1,93 @@
+/*
+ * OlePro32 Stubs
+ *
+ * Copyright 1999 Corel Corporation
+ *
+ * Sean Langley
+ */
+
+#include "windef.h"
+#include "debugtools.h"
+#include "olectl.h"
+
+DEFAULT_DEBUG_CHANNEL(ole)
+
+/*****************************************************
+ * OleIconToCursor
+ */
+HCURSOR WINAPI OleIconToCursor( HINSTANCE hinstExe, HICON hicon)
+{
+	FIXME("(%x,%x), not implemented (olepro32.dll)\n",hinstExe,hicon);
+	return S_OK;
+}
+
+/*****************************************************
+ * OleCreatePropertyFrameIndirect
+ */
+HRESULT WINAPI OleCreatePropertyFrameIndirect( LPOCPFIPARAMS lpParams)
+{
+	FIXME("(%p), not implemented (olepro32.dll)\n",lpParams);
+	return S_OK;
+}
+ 
+/*****************************************************
+ * OleCreatePropertyFrame
+ */
+HRESULT WINAPI OleCreatePropertyFrame( HWND hwndOwner, UINT x, UINT y,
+			LPCOLESTR lpszCaption,ULONG cObjects, LPUNKNOWN* ppUnk,
+			ULONG cPages, LPCLSID pPageClsID, LCID lcid, 
+			DWORD dwReserved, LPVOID pvReserved )
+{
+	FIXME("(%x,%d,%d,%p,%ld,%p,%ld,%p,%x,%ld,%p), not implemented (olepro32.dll)\n",
+		hwndOwner,x,y,lpszCaption,cObjects,ppUnk,cPages,pPageClsID,
+		(int)lcid,dwReserved,pvReserved);
+	return S_OK;
+}
+ 
+/*****************************************************
+ * OleLoadPicture
+ */
+HRESULT WINAPI OleLoadPicture( LPSTREAM lpstream, LONG lSize, BOOL fRunmode,
+		            REFIID reed, LPVOID *lplpvObj )
+{
+	FIXME("(%p,%ld,%d,%p,%p), not implemented (olepro32.dll) \n",
+		lpstream,lSize,fRunmode,reed,lplpvObj
+	);
+	return S_OK;
+}
+ 
+/*****************************************************
+ * OleCreatePictureIndirect
+ */
+HRESULT WINAPI OleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid,
+		            BOOL fOwn, LPVOID * lplpvObj )
+{
+	FIXME("(%p,%p,%d,%p), not implemented (olepro32.dll)\n",
+		lpPictDesc,riid,fOwn,lplpvObj
+	);
+	return S_OK;
+}
+ 
+HRESULT WINAPI OLEPRO32_DllUnregisterServer()
+{
+	FIXME("not implemented (olepro32.dll) \n");
+	return S_OK;
+}
+
+HRESULT WINAPI OLEPRO32_DllRegisterServer()
+{
+	FIXME("not implemented (olepro32.dll) \n");
+	return S_OK;
+}
+
+HRESULT WINAPI OLEPRO32_DllCanUnloadNow( )
+{
+	FIXME("not implemented (olepro32.dll) \n");
+	return S_OK;
+}
+
+HRESULT WINAPI OLEPRO32_DllGetClassObject( REFCLSID rclsid, REFIID riid, LPVOID* ppv )
+{
+	FIXME("not implemented (olepro32.dll) \n");
+	return S_OK;
+}