summaryrefslogtreecommitdiffstats
path: root/private/ole2ui32/mfcui
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ole2ui32/mfcui
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/ole2ui32/mfcui')
-rw-r--r--private/ole2ui32/mfcui/dirs37
-rw-r--r--private/ole2ui32/mfcui/mfcui.cpp223
-rw-r--r--private/ole2ui32/mfcui/mfcuia32/makefile6
-rw-r--r--private/ole2ui32/mfcui/mfcuia32/mfcui.rc80
-rw-r--r--private/ole2ui32/mfcui/mfcuia32/mfcuia32.def19
-rw-r--r--private/ole2ui32/mfcui/mfcuia32/sources52
-rw-r--r--private/ole2ui32/mfcui/mfcuiw32/makefile6
-rw-r--r--private/ole2ui32/mfcui/mfcuiw32/mfcui.rc80
-rw-r--r--private/ole2ui32/mfcui/mfcuiw32/mfcuiw32.def19
-rw-r--r--private/ole2ui32/mfcui/mfcuiw32/sources50
-rw-r--r--private/ole2ui32/mfcui/resource.h15
11 files changed, 587 insertions, 0 deletions
diff --git a/private/ole2ui32/mfcui/dirs b/private/ole2ui32/mfcui/dirs
new file mode 100644
index 000000000..06cd74c21
--- /dev/null
+++ b/private/ole2ui32/mfcui/dirs
@@ -0,0 +1,37 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ dirs.
+
+Abstract:
+
+ This file specifies the subdirectories of the current directory that
+ contain component makefiles.
+
+
+Author:
+
+ Drew Bliss (DrewB) 21-Dec-1993
+
+!ENDIF
+
+#
+# This is a list of all subdirectories that build required components.
+# Each subdirectory name should appear on a line by itself. The build
+# follows the order in which the subdirectories are specified.
+#
+
+DIRS= \
+ mfcuia32 \
+ mfcuiw32
+
+#
+# This is a list of all subdirectories that build optional components.
+# Each subdirectory name should appear on a line by itself. The build
+# follows the order in which the subdirectories are specified.
+#
+
+OPTIONAL_DIRS=
diff --git a/private/ole2ui32/mfcui/mfcui.cpp b/private/ole2ui32/mfcui/mfcui.cpp
new file mode 100644
index 000000000..c6043582d
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcui.cpp
@@ -0,0 +1,223 @@
+// ===========================================================================
+// File: M F C U I . C P P
+//
+// Copyright 1995 Microsoft Corporation. All Rights Reserved.
+// Microsoft Confidential
+// ===========================================================================
+#ifndef UNICODE
+
+// %%Includes: ---------------------------------------------------------------
+#include <windows.h>
+#include <ole2.h>
+#include <oledlg.h>
+
+// %%Prototypes: -------------------------------------------------------------
+STDAPI Ole2AnsiWFromA(REFIID riid, LPUNKNOWN punkWrappeeA, LPUNKNOWN *ppunkWrapperW);
+STDAPI Ole2AnsiAFromW(REFIID riid, LPUNKNOWN punkWrappeeW, LPUNKNOWN *ppunkWrapperA);
+
+
+// ---------------------------------------------------------------------------
+// %%Function: OleUIAddVerbMenu %%Reviewed: 00/00/95
+//
+// Description:
+// Wraps OleUIAddVerbMenu to OLEDLG.DLL for MFC clients, which expect to be
+// able to pass Ansi IOleObject's.
+// ---------------------------------------------------------------------------
+#undef OleUIAddVerbMenu // overrides the Ansi/Unicode macros in OLEDLG.H
+ STDAPI_(BOOL)
+OleUIAddVerbMenu(LPOLEOBJECT lpOleObjA, LPCSTR lpszShortType,
+ HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+ BOOL bAddConvert, UINT idConvert, HMENU FAR *lphMenu)
+{
+ LPOLEOBJECT lpOleObjW = NULL;
+ BOOL fResult = FALSE;
+
+ // allow NULL IOleObject (OleUIAddVerbMenuA handles this by making an empty menu), but
+ // otherwise wrap the Ansi IOleObject to Unicode.
+ if (lpOleObjA == NULL ||
+ SUCCEEDED(Ole2AnsiWFromA(IID_IOleObject, (LPUNKNOWN)lpOleObjA, (LPUNKNOWN *)&lpOleObjW)))
+ {
+ fResult = OleUIAddVerbMenuA(lpOleObjW, lpszShortType, hMenu, uPos, uIDVerbMin,
+ uIDVerbMax, bAddConvert, idConvert, lphMenu);
+
+ // release the Unicode IOleObject if it was created
+ if (lpOleObjW != NULL)
+ lpOleObjW->Release();
+ }
+
+ return fResult;
+} // OleUIAddVerbMenu
+
+// ---------------------------------------------------------------------------
+// %%Function: OleUIInsertObject %%Reviewed: 00/00/95
+//
+// Description:
+// Wraps OleUIInsertObject to OLEDLG.DLL for MFC clients, which expect to be
+// able to pass Ansi IOleClientSite and IStorage in and receive Ansi interfaces
+// out in ppvObj.
+// ---------------------------------------------------------------------------
+#undef OleUIInsertObject // overrides the Ansi/Unicode macros in OLEDLG.H
+ STDAPI_(UINT)
+OleUIInsertObject(LPOLEUIINSERTOBJECTA lpio)
+{
+ LPOLECLIENTSITE lpIOleClientSiteA = NULL;
+ LPSTORAGE lpIStorageA = NULL;
+ LPVOID FAR *ppvObjA;
+ LPUNKNOWN punkObjW = NULL;
+ BOOL fCreatingObject;
+ UINT wResult;
+ HRESULT hr = S_OK;
+
+ // validate the structure superficially: let the actual function do most of the validation
+ if (!lpio)
+ return OLEUI_ERR_STRUCTURENULL;
+ if (IsBadReadPtr(lpio, sizeof(LPOLEUIINSERTOBJECTA)) ||
+ IsBadWritePtr(lpio, sizeof(LPOLEUIINSERTOBJECTA)))
+ return OLEUI_ERR_STRUCTUREINVALID;
+ if (lpio->cbStruct < sizeof(LPOLEUIINSERTOBJECTA))
+ return OLEUI_ERR_CBSTRUCTINCORRECT;
+
+ if (fCreatingObject = (lpio->dwFlags & (IOF_CREATENEWOBJECT | IOF_CREATEFILEOBJECT | IOF_CREATELINKOBJECT)))
+ {
+ // verify these parameters, otherwise cleanup becomes complicated
+ if (IsBadWritePtr(lpio->ppvObj, sizeof(LPUNKNOWN)))
+ return OLEUI_IOERR_PPVOBJINVALID;
+ if (lpio->lpIOleClientSite != NULL && IsBadReadPtr(lpio->lpIOleClientSite, sizeof(IOleClientSite)))
+ return OLEUI_IOERR_LPIOLECLIENTSITEINVALID;
+ if (lpio->lpIStorage != NULL && IsBadReadPtr(lpio->lpIStorage, sizeof(IStorage)))
+ return OLEUI_IOERR_LPISTORAGEINVALID;
+
+ // save away the Ansi IOleClientSite, stuff in our Unicode one.
+ // if it's NULL, OleUIInsertObjectA() will handle the error appropriately and we'll clean up correctly, below.
+ if (lpIOleClientSiteA = lpio->lpIOleClientSite)
+ {
+ hr = Ole2AnsiWFromA(IID_IOleClientSite, (LPUNKNOWN)lpIOleClientSiteA, (LPUNKNOWN *)&lpio->lpIOleClientSite);
+ if (FAILED(hr))
+ {
+ lpio->lpIOleClientSite = lpIOleClientSiteA;
+ lpio->sc = hr;
+ return OLEUI_IOERR_SCODEHASERROR;
+ }
+ }
+
+ // save away the Ansi IStorage, stuff in our Unicode one.
+ // if it's NULL, OleUIInsertObjectA() will handle the error appropriately and we'll clean up correctly, below.
+ if (lpIStorageA = lpio->lpIStorage)
+ {
+ hr = Ole2AnsiWFromA(IID_IStorage, (LPUNKNOWN)lpIStorageA, (LPUNKNOWN *)&lpio->lpIStorage);
+ if (FAILED(hr))
+ {
+ // make sure to free the Unicode IOleClientSite which we converted above.
+ if (lpio->lpIOleClientSite)
+ {
+ lpio->lpIOleClientSite->Release();
+ lpio->lpIOleClientSite = lpIOleClientSiteA;
+ }
+ lpio->lpIStorage = lpIStorageA;
+ lpio->sc = hr;
+ return OLEUI_IOERR_SCODEHASERROR;
+ }
+ }
+
+ // save the current Ansi ppvObj, stuff in our Unicode one
+ ppvObjA = lpio->ppvObj;
+ lpio->ppvObj = (LPVOID FAR *)&punkObjW;
+ }
+
+ wResult = OleUIInsertObjectA(lpio);
+
+ // regardless of success or failure of the above call, we have to clean up the wrapping we did
+ if (fCreatingObject)
+ {
+ // return the Ansi versions of the IOleClientSite and IStorage to
+ // the structure, and release the Unicode ones
+ if (lpio->lpIOleClientSite)
+ {
+ lpio->lpIOleClientSite->Release();
+ lpio->lpIOleClientSite = lpIOleClientSiteA;
+ }
+ if (lpio->lpIStorage)
+ {
+ lpio->lpIStorage->Release();
+ lpio->lpIStorage = lpIStorageA;
+ }
+
+ // return the Ansi object pointer to the structure
+ lpio->ppvObj = ppvObjA;
+
+ // convert
+ if (punkObjW != NULL)
+ {
+ HRESULT hr;
+ // if we were creating an object and we succeeded, punkObjW must be valid and contain an interface
+ // of type iid. if not, there is a problem in OleUIInsertObjectA(), not in this code. we could assert
+ // here if this code wanted to, but wouldn't be able to properly circumvent the error anyway.
+ if (FAILED(hr = Ole2AnsiAFromW(lpio->iid, (LPUNKNOWN)punkObjW, (LPUNKNOWN *)ppvObjA)))
+ {
+ lpio->sc = hr;
+ }
+ punkObjW->Release();
+ if (lpio->sc != S_OK)
+ return OLEUI_IOERR_SCODEHASERROR;
+ }
+ }
+
+ return wResult;
+} // OleUIInsertObject
+
+// ---------------------------------------------------------------------------
+// %%Function: OleUIPasteSpecial %%Reviewed: 00/00/95
+//
+// Description:
+// Wraps OleUIPasteSpecial to OLEDLG.DLL for MFC clients, which expect to be
+// able to pass in and get back Ansi IDataObject's.
+// ---------------------------------------------------------------------------
+#undef OleUIPasteSpecial // overrides the Ansi/Unicode macros in OLEDLG.H
+ STDAPI_(UINT)
+OleUIPasteSpecial(LPOLEUIPASTESPECIALA lpps)
+{
+ LPDATAOBJECT lpSrcDataObjA;
+ UINT wResult;
+
+ // validate the structure superficially: let the actual function do most of the validation
+ if (!lpps)
+ return OLEUI_ERR_STRUCTURENULL;
+ if (IsBadReadPtr(lpps, sizeof(LPOLEUIPASTESPECIALA)) ||
+ IsBadWritePtr(lpps, sizeof(LPOLEUIPASTESPECIALA)))
+ return OLEUI_ERR_STRUCTUREINVALID;
+ if (lpps->cbStruct < sizeof(LPOLEUIPASTESPECIALA))
+ return OLEUI_ERR_CBSTRUCTINCORRECT;
+ if (NULL != lpps->lpSrcDataObj && IsBadReadPtr(lpps->lpSrcDataObj, sizeof(IDataObject)))
+ return OLEUI_IOERR_SRCDATAOBJECTINVALID;
+
+ if (!(lpSrcDataObjA = lpps->lpSrcDataObj) ||
+ SUCCEEDED(Ole2AnsiWFromA(IID_IDataObject, (LPUNKNOWN)lpSrcDataObjA, (LPUNKNOWN *)&lpps->lpSrcDataObj)))
+ {
+ wResult = OleUIPasteSpecialA(lpps);
+
+ // if we had an Ansi IDataObject on entry, put it back and release the Unicode wrapper.
+ if (lpSrcDataObjA != NULL)
+ {
+ lpps->lpSrcDataObj->Release();
+ lpps->lpSrcDataObj = lpSrcDataObjA;
+ }
+ // otherwise check to see if OleUIPasteSpecialA() placed a Unicode IDataObject into our structure.
+ // if it did, wrap it to make sure an Ansi one gets sent back out.
+ else if (lpps->lpSrcDataObj != NULL)
+ {
+ if (FAILED(Ole2AnsiAFromW(IID_IDataObject, (LPUNKNOWN)lpps->lpSrcDataObj, (LPUNKNOWN *)&lpSrcDataObjA)))
+ {
+ lpps->lpSrcDataObj->Release();
+ lpps->lpSrcDataObj = NULL;
+ return OLEUI_PSERR_GETCLIPBOARDFAILED; // well, that's pretty much what happened, after all
+ }
+ lpps->lpSrcDataObj->Release();
+ lpps->lpSrcDataObj = lpSrcDataObjA;
+ }
+ }
+
+ return wResult;
+} // OleUIPasteSpecial
+
+#endif // !UNICODE
+// EOF =======================================================================
diff --git a/private/ole2ui32/mfcui/mfcuia32/makefile b/private/ole2ui32/mfcui/mfcuia32/makefile
new file mode 100644
index 000000000..6ee4f43fa
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcuia32/makefile
@@ -0,0 +1,6 @@
+#
+# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
+# file to this component. This file merely indirects to the real make file
+# that is shared by all the components of NT OS/2
+#
+!INCLUDE $(NTMAKEENV)\makefile.def
diff --git a/private/ole2ui32/mfcui/mfcuia32/mfcui.rc b/private/ole2ui32/mfcui/mfcuia32/mfcui.rc
new file mode 100644
index 000000000..e2f4e019c
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcuia32/mfcui.rc
@@ -0,0 +1,80 @@
+//Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+1 VERSIONINFO
+ FILEVERSION 3,0,0,0
+ PRODUCTVERSION 2,0,1,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904e4"
+ BEGIN
+ VALUE "CompanyName", "Microsoft Corporation\0"
+ VALUE "FileDescription", "Microsoft Windows(TM) OLE 2.0 User Interface Support\0"
+ VALUE "FileVersion", "3.0\0"
+ VALUE "InternalName", "MFCUIA32\0"
+ VALUE "LegalCopyright", "Copyright (C) Microsoft Corp. 1995\0"
+ VALUE "OriginalFilename", "MFCUIA32.DLL\0"
+ VALUE "ProductName", "Microsoft Windows(TM) OLE 2.0 User Interface Support\0"
+ VALUE "ProductVersion", "2.01\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1252
+ END
+END
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/private/ole2ui32/mfcui/mfcuia32/mfcuia32.def b/private/ole2ui32/mfcui/mfcuia32/mfcuia32.def
new file mode 100644
index 000000000..e218230a1
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcuia32/mfcuia32.def
@@ -0,0 +1,19 @@
+; mfcuia32.def
+; Copyright 1995 Microsoft Corporation. All Rights Reserved.
+
+DESCRIPTION 'OLE 2.0 UI Support Library.'
+
+EXPORTS
+OleUIAddVerbMenu @1
+OleUICanConvertOrActivateAs @2
+OleUIInsertObject @3
+OleUIPasteSpecial @4
+OleUIEditLinks=OleUIEditLinksA @5
+OleUIChangeIcon=OleUIChangeIconA @6
+OleUIConvert=OleUIConvertA @7
+OleUIBusy=OleUIBusyA @8
+OleUIUpdateLinks=OleUIUpdateLinksA @9
+OleUIPromptUser=OleUIPromptUserA @10
+OleUIObjectProperties=OleUIObjectPropertiesA @11
+OleUIChangeSource=OleUIChangeSourceA @12
+
diff --git a/private/ole2ui32/mfcui/mfcuia32/sources b/private/ole2ui32/mfcui/mfcuia32/sources
new file mode 100644
index 000000000..f7d2102f8
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcuia32/sources
@@ -0,0 +1,52 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ sources.
+
+Abstract:
+
+ This file specifies the target component being built and the list of
+ sources files needed to build that component. Also specifies optional
+ compiler switches and libraries that are unique for the component being
+ built.
+
+
+Author:
+
+
+
+!ENDIF
+
+DLLENTRY=DllMain
+
+DLLBASE=@$(BASEDIR)\PUBLIC\SDK\LIB\coffbase.txt,usermode
+
+DLLDEF=obj\*\mfcuia32.def
+
+MAJORCOMP=mfcuia32
+MINORCOMP=
+
+TARGETNAME=mfcuia32
+TARGETPATH=$(BASEDIR)\public\sdk\lib
+C_DEFINES=-DWIN32
+TARGETTYPE=DYNLINK
+UMTYPE=windows
+
+INCLUDES=..
+
+386_OPTIMIZATION=/Oy-
+
+SOURCES= ..\mfcui.cpp \
+ mfcui.rc
+
+USE_CRTDLL=1
+
+LINKLIBS= $(BASEDIR)\public\sdk\lib\*\oledlg.lib \
+ mfcans32.lib \
+ $(BASEDIR)\public\sdk\lib\*\kernel32.lib \
+ $(BASEDIR)\public\sdk\lib\*\uuid.lib
+
+
diff --git a/private/ole2ui32/mfcui/mfcuiw32/makefile b/private/ole2ui32/mfcui/mfcuiw32/makefile
new file mode 100644
index 000000000..6ee4f43fa
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcuiw32/makefile
@@ -0,0 +1,6 @@
+#
+# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
+# file to this component. This file merely indirects to the real make file
+# that is shared by all the components of NT OS/2
+#
+!INCLUDE $(NTMAKEENV)\makefile.def
diff --git a/private/ole2ui32/mfcui/mfcuiw32/mfcui.rc b/private/ole2ui32/mfcui/mfcuiw32/mfcui.rc
new file mode 100644
index 000000000..2e11ee0d7
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcuiw32/mfcui.rc
@@ -0,0 +1,80 @@
+//Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+1 VERSIONINFO
+ FILEVERSION 3,0,0,0
+ PRODUCTVERSION 2,0,1,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904e4"
+ BEGIN
+ VALUE "CompanyName", "Microsoft Corporation\0"
+ VALUE "FileDescription", "Microsoft Windows(TM) OLE 2.0 User Interface Support\0"
+ VALUE "FileVersion", "3.0\0"
+ VALUE "InternalName", "MFCUIW32\0"
+ VALUE "LegalCopyright", "Copyright \251 Microsoft Corp. 1995\0"
+ VALUE "OriginalFilename", "MFCUIW32.DLL\0"
+ VALUE "ProductName", "Microsoft Windows(TM) OLE 2.0 User Interface Support\0"
+ VALUE "ProductVersion", "2.01\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1252
+ END
+END
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/private/ole2ui32/mfcui/mfcuiw32/mfcuiw32.def b/private/ole2ui32/mfcui/mfcuiw32/mfcuiw32.def
new file mode 100644
index 000000000..39ee70590
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcuiw32/mfcuiw32.def
@@ -0,0 +1,19 @@
+; mfcuiw32.def
+; Copyright 1995 Microsoft Corporation. All Rights Reserved.
+
+DESCRIPTION 'OLE 2.0 UI Support Library.'
+
+
+EXPORTS
+OleUIAddVerbMenu=OleUIAddVerbMenuW @1
+OleUICanConvertOrActivateAs @2
+OleUIInsertObject=OleUIInsertObjectW @3
+OleUIPasteSpecial=OleUIPasteSpecialW @4
+OleUIEditLinks=OleUIEditLinksW @5
+OleUIChangeIcon=OleUIChangeIconW @6
+OleUIConvert=OleUIConvertW @7
+OleUIBusy=OleUIBusyW @8
+OleUIUpdateLinks=OleUIUpdateLinksW @9
+OleUIPromptUser=OleUIPromptUserW @10
+OleUIObjectProperties=OleUIObjectPropertiesW @11
+OleUIChangeSource=OleUIChangeSourceW @12
diff --git a/private/ole2ui32/mfcui/mfcuiw32/sources b/private/ole2ui32/mfcui/mfcuiw32/sources
new file mode 100644
index 000000000..e39252b9a
--- /dev/null
+++ b/private/ole2ui32/mfcui/mfcuiw32/sources
@@ -0,0 +1,50 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ sources.
+
+Abstract:
+
+ This file specifies the target component being built and the list of
+ sources files needed to build that component. Also specifies optional
+ compiler switches and libraries that are unique for the component being
+ built.
+
+
+Author:
+
+
+
+!ENDIF
+
+
+DLLENTRY=DllMain
+
+DLLBASE=@$(BASEDIR)\PUBLIC\SDK\LIB\coffbase.txt,usermode
+
+DLLDEF=obj\*\mfcuiw32.def
+
+MAJORCOMP=mfcuiw32
+MINORCOMP=
+
+TARGETNAME=mfcuiw32
+TARGETPATH=$(BASEDIR)\public\sdk\lib
+C_DEFINES=-DWIN32 -DUNICODE
+TARGETTYPE=DYNLINK
+UMTYPE=windows
+
+INCLUDES=..
+
+386_OPTIMIZATION=/Oy-
+
+USE_CRTDLL=1
+
+SOURCES= ..\mfcui.cpp \
+ mfcui.rc
+
+LINKLIBS= $(BASEDIR)\public\sdk\lib\*\oledlg.lib \
+ $(BASEDIR)\public\sdk\lib\*\kernel32.lib
+
diff --git a/private/ole2ui32/mfcui/resource.h b/private/ole2ui32/mfcui/resource.h
new file mode 100644
index 000000000..a0484466f
--- /dev/null
+++ b/private/ole2ui32/mfcui/resource.h
@@ -0,0 +1,15 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by mfcui.rc
+//
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif