From 5a23a0012f4010d10b9b30c80d9b0737b3051fb9 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Thu, 2 Jan 2003 19:34:14 +0000
Subject: [PATCH] Added ctl3d, ctl3dv2 and ctl3d32 API implementations.

---
 configure               |   3 +-
 configure.ac            |   1 +
 dlls/Makefile.in        |  16 ++++++
 dlls/ctl3d/.cvsignore   |   6 +++
 dlls/ctl3d/Makefile.in  |  18 +++++++
 dlls/ctl3d/ctl3d.c      | 113 ++++++++++++++++++++++++++++++++++++++++
 dlls/ctl3d/ctl3d.spec   |  25 +++++++++
 dlls/ctl3d/ctl3d32.c    | 113 ++++++++++++++++++++++++++++++++++++++++
 dlls/ctl3d/ctl3d32.spec |  25 +++++++++
 dlls/ctl3d/ctl3dv2.spec |  25 +++++++++
 dlls/user/user32.spec   |   1 +
 11 files changed, 345 insertions(+), 1 deletion(-)
 create mode 100644 dlls/ctl3d/.cvsignore
 create mode 100644 dlls/ctl3d/Makefile.in
 create mode 100644 dlls/ctl3d/ctl3d.c
 create mode 100644 dlls/ctl3d/ctl3d.spec
 create mode 100644 dlls/ctl3d/ctl3d32.c
 create mode 100644 dlls/ctl3d/ctl3d32.spec
 create mode 100644 dlls/ctl3d/ctl3dv2.spec

diff --git a/configure b/configure
index eaa5f654a33..123131be2fe 100755
--- a/configure
+++ b/configure
@@ -15231,7 +15231,7 @@ MAKE_TEST_RULES=dlls/Maketest.rules
 MAKE_PROG_RULES=programs/Makeprog.rules
 
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/d3d8/Makefile dlls/d3dx8/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msdmo/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvideo/Makefile dlls/msvideo/msrle32/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winenas/Makefile dlls/winmm/winejack/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile library/Makefile miscemu/Makefile ole/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/notepad/Makefile programs/osversioncheck/Makefile programs/progman/Makefile programs/regapi/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/regtest/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/wmc/Makefile tools/wpp/Makefile tools/wrc/Makefile unicode/Makefile"
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/d3d8/Makefile dlls/d3dx8/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msdmo/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvideo/Makefile dlls/msvideo/msrle32/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winenas/Makefile dlls/winmm/winejack/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile library/Makefile miscemu/Makefile ole/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/notepad/Makefile programs/osversioncheck/Makefile programs/progman/Makefile programs/regapi/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/regtest/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/wmc/Makefile tools/wpp/Makefile tools/wrc/Makefile unicode/Makefile"
 
 
 cat >confcache <<\_ACEOF
@@ -15777,6 +15777,7 @@ do
   "dlls/commdlg/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/commdlg/Makefile" ;;
   "dlls/crtdll/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/crtdll/Makefile" ;;
   "dlls/crypt32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/crypt32/Makefile" ;;
+  "dlls/ctl3d/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/ctl3d/Makefile" ;;
   "dlls/d3d8/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/d3d8/Makefile" ;;
   "dlls/d3dx8/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/d3dx8/Makefile" ;;
   "dlls/dciman32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/dciman32/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index eb91bc3cfc6..f6ce7ac608a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1370,6 +1370,7 @@ dlls/comctl32/Makefile
 dlls/commdlg/Makefile
 dlls/crtdll/Makefile
 dlls/crypt32/Makefile
+dlls/ctl3d/Makefile
 dlls/d3d8/Makefile
 dlls/d3dx8/Makefile
 dlls/dciman32/Makefile
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index d4cc4a73f01..434e1844b4e 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -24,6 +24,7 @@ BASEDIRS = \
 	commdlg \
 	crtdll \
 	crypt32 \
+	ctl3d \
 	dciman32 \
 	devenum \
 	dinput \
@@ -132,6 +133,8 @@ WIN16_FILES = \
 	comm.dll$(DLLEXT) \
 	commdlg.dll$(DLLEXT) \
 	compobj.dll$(DLLEXT) \
+	ctl3d.dll$(DLLEXT) \
+	ctl3dv2.dll$(DLLEXT) \
 	ddeml.dll$(DLLEXT) \
 	dispdib.dll$(DLLEXT) \
 	display.dll$(DLLEXT) \
@@ -187,6 +190,7 @@ all: \
 	comdlg32.dll$(DLLEXT) \
 	crtdll.dll$(DLLEXT) \
 	crypt32.dll$(DLLEXT) \
+	ctl3d32.dll$(DLLEXT) \
 	dciman32.dll$(DLLEXT) \
 	devenum.dll$(DLLEXT) \
 	dinput.dll$(DLLEXT) \
@@ -302,6 +306,9 @@ crtdll.dll$(DLLEXT): crtdll/crtdll.dll$(DLLEXT)
 crypt32.dll$(DLLEXT): crypt32/crypt32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) crypt32/crypt32.dll$(DLLEXT) $@
 
+ctl3d32.dll$(DLLEXT) ctl3d.dll$(DLLEXT) ctl3dv2.dll$(DLLEXT): ctl3d/ctl3d32.dll$(DLLEXT)
+	$(RM) $@ && $(LN_S) ctl3d/ctl3d32.dll$(DLLEXT) $@
+
 d3d8.dll$(DLLEXT): d3d8/d3d8.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) d3d8/d3d8.dll$(DLLEXT) $@
 
@@ -594,6 +601,7 @@ IMPORT_LIBS = \
 	libcomdlg32 \
 	libcrtdll \
 	libcrypt32 \
+	libctl3d32 \
 	libd3d8 \
 	libd3dx8 \
 	libdciman32 \
@@ -712,6 +720,11 @@ libcrypt32.def: crypt32/crypt32.spec.def
 libcrypt32.a: crypt32/crypt32.spec.def
 	$(DLLTOOL) -k -l $@ -d crypt32/crypt32.spec.def
 
+libctl3d32.def: ctl3d/ctl3d32.spec.def
+	$(RM) $@ && $(LN_S) ctl3d/ctl3d32.spec.def $@
+libctl3d32.a: ctl3d/ctl3d32.spec.def
+	$(DLLTOOL) -k -l $@ -d ctl3d/ctl3d32.spec.def
+
 libd3d8.def: d3d8/d3d8.spec.def
 	$(RM) $@ && $(LN_S) d3d8/d3d8.spec.def $@
 libd3d8.a: d3d8/d3d8.spec.def
@@ -1081,6 +1094,7 @@ comctl32/comctl32.spec.def: $(WINEBUILD)
 commdlg/comdlg32.spec.def: $(WINEBUILD)
 crtdll/crtdll.spec.def: $(WINEBUILD)
 crypt32/crypt32.spec.def: $(WINEBUILD)
+ctl3d/ctl3d32.spec.def: $(WINEBUILD)
 d3d8/d3d8.spec.def: $(WINEBUILD)
 d3dx8/d3dx8.spec.def: $(WINEBUILD)
 dciman32/dciman32.spec.def: $(WINEBUILD)
@@ -1168,6 +1182,7 @@ comctl32/comctl32.dll$(DLLEXT): comctl32
 commdlg/comdlg32.dll$(DLLEXT): commdlg
 crtdll/crtdll.dll$(DLLEXT): crtdll
 crypt32/crypt32.dll$(DLLEXT): crypt32
+ctl3d/ctl3d32.dll$(DLLEXT): ctl3d
 d3d8/d3d8.dll$(DLLEXT): d3d8
 d3dx8/d3dx8.dll$(DLLEXT): d3dx8
 dciman32/dciman32.dll$(DLLEXT): dciman32
@@ -1271,6 +1286,7 @@ comctl32/__install__: comctl32.dll$(DLLEXT)
 commdlg/__install__: comdlg32.dll$(DLLEXT)
 crtdll/__install__: crtdll.dll$(DLLEXT)
 crypt32/__install__: crypt32.dll$(DLLEXT)
+ctl3d/__install__: ctl3d32.dll$(DLLEXT)
 d3d8/__install__: d3d8.dll$(DLLEXT)
 d3dx8/__install__: d3dx8.dll$(DLLEXT)
 dciman32/__install__: dciman32.dll$(DLLEXT)
diff --git a/dlls/ctl3d/.cvsignore b/dlls/ctl3d/.cvsignore
new file mode 100644
index 00000000000..a14470a8e6b
--- /dev/null
+++ b/dlls/ctl3d/.cvsignore
@@ -0,0 +1,6 @@
+Makefile
+ctl3d.spec.c
+ctl3d32.dll.dbg.c
+ctl3d32.spec.c
+ctl3d32.spec.def
+ctl3dv2.spec.c
diff --git a/dlls/ctl3d/Makefile.in b/dlls/ctl3d/Makefile.in
new file mode 100644
index 00000000000..f8379cea347
--- /dev/null
+++ b/dlls/ctl3d/Makefile.in
@@ -0,0 +1,18 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = ctl3d32.dll
+IMPORTS   = user32 kernel32
+ALTNAMES  = ctl3d.dll ctl3dv2.dll
+
+LDDLLFLAGS = @LDDLLFLAGS@
+SYMBOLFILE = $(MODULE).tmp.o
+
+C_SRCS = ctl3d32.c
+
+C_SRCS16 = ctl3d.c
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
diff --git a/dlls/ctl3d/ctl3d.c b/dlls/ctl3d/ctl3d.c
new file mode 100644
index 00000000000..483a46c4b3c
--- /dev/null
+++ b/dlls/ctl3d/ctl3d.c
@@ -0,0 +1,113 @@
+/*
+ * 16-bit CTL3D and CTL3DV2 API stubs.
+ *
+ * Copyright (c) 2003 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
+
+BOOL16 WINAPI Ctl3dAutoSubclass16(HINSTANCE16 hInst)
+{
+    return TRUE;
+}
+
+BOOL16 WINAPI Ctl3dAutoSubclassEx16(HINSTANCE16 hInst, DWORD type)
+{
+    return TRUE;
+}
+
+BOOL16 WINAPI Ctl3dColorChange16(void)
+{
+    return TRUE;
+}
+
+HBRUSH WINAPI Ctl3dCtlColor16(HDC16 hdc, LONG hwnd)
+{
+    return 0;
+}
+
+HBRUSH WINAPI Ctl3dCtlColorEx16(UINT16 msg, WPARAM16 wParam, LPARAM lParam)
+{
+    return 0;
+}
+
+
+LONG WINAPI Ctl3dDlgFramePaint16(HWND16 hwnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam)
+{
+    return DefWindowProc16(hwnd, msg, wParam, lParam);
+}
+
+BOOL16 WINAPI Ctl3dEnabled16(void)
+{
+    return FALSE;
+}
+
+WORD WINAPI Ctl3dGetVer16(void)
+{
+    return MAKEWORD(31,2);
+}
+
+BOOL16 WINAPI Ctl3dIsAutoSubclass16(void)
+{
+    return FALSE;
+}
+
+BOOL16 WINAPI Ctl3dRegister16(HINSTANCE16 hInst)
+{
+    return FALSE;
+}
+
+BOOL16 WINAPI Ctl3dSubclassCtl16(HWND16 hwnd)
+{
+    return FALSE;
+}
+
+BOOL16 WINAPI Ctl3dSubclassCtlEx16(HWND16 hwnd, INT16 type)
+{
+    return FALSE;
+}
+
+BOOL16 WINAPI Ctl3dSubclassDlg16(HWND16 hwnd, WORD types)
+{
+    return FALSE;
+}
+
+BOOL16 WINAPI Ctl3dSubclassDlgEx16(HWND16 hwnd, DWORD types)
+{
+    return FALSE;
+}
+
+BOOL16 WINAPI Ctl3dUnAutoSubclass16(void)
+{
+    return FALSE;
+}
+
+BOOL16 WINAPI Ctl3dUnregister16(HINSTANCE16 hInst)
+{
+    return TRUE;
+}
+
+
+BOOL16 WINAPI Ctl3dUnsubclassCtl16(HWND16 hwnd)
+{
+    return FALSE;
+}
+
+void WINAPI Ctl3dWinIniChange16(void)
+{
+}
diff --git a/dlls/ctl3d/ctl3d.spec b/dlls/ctl3d/ctl3d.spec
new file mode 100644
index 00000000000..7a40513d533
--- /dev/null
+++ b/dlls/ctl3d/ctl3d.spec
@@ -0,0 +1,25 @@
+1  pascal16 Ctl3dGetVer() Ctl3dGetVer16
+2  pascal16 Ctl3dSubclassDlg(word word) Ctl3dSubclassDlg16
+3  pascal16 Ctl3dSubclassCtl(word) Ctl3dSubclassCtl16
+4  pascal16 Ctl3dCtlColor(word long) Ctl3dCtlColor16
+5  pascal16 Ctl3dEnabled() Ctl3dEnabled16
+6  pascal16 Ctl3dColorChange() Ctl3dColorChange16
+7  stub BtnWndProc3d
+8  stub EditWndProc3d
+9  stub ListWndProc3d
+10 stub ComboWndProc3d
+11 stub StaticWndProc3d
+12 pascal16 Ctl3dRegister(word) Ctl3dRegister16
+13 pascal16 Ctl3dUnregister(word) Ctl3dUnregister16
+16 pascal16 Ctl3dAutoSubclass(word) Ctl3dAutoSubclass16
+17 stub Ctl3dDlgProc
+18 pascal16 Ctl3dCtlColorEx(word word long) Ctl3dCtlColorEx16
+19 stub Ctl3dSetStyle
+20 pascal Ctl3dDlgFramePaint(word word word long) Ctl3dDlgFramePaint16
+21 pascal16 Ctl3dSubclassDlgEx(word long) Ctl3dSubclassDlgEx16
+22 pascal16 Ctl3dWinIniChange() Ctl3dWinIniChange16
+23 pascal16 Ctl3dIsAutoSubclass() Ctl3dIsAutoSubclass16
+24 pascal16 Ctl3dUnAutoSubclass() Ctl3dUnAutoSubclass16
+25 pascal16 Ctl3dSubclassCtlEx(word word) Ctl3dSubclassCtlEx16
+26 pascal16 Ctl3dUnsubclassCtl(word) Ctl3dUnsubclassCtl16
+27 pascal16 Ctl3dAutoSubclassEx(word long) Ctl3dAutoSubclassEx16
diff --git a/dlls/ctl3d/ctl3d32.c b/dlls/ctl3d/ctl3d32.c
new file mode 100644
index 00000000000..a182b80e1b6
--- /dev/null
+++ b/dlls/ctl3d/ctl3d32.c
@@ -0,0 +1,113 @@
+/*
+ * CTL3D32 API stubs.
+ *
+ * Copyright (c) 2003 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "winbase.h"
+#include "winuser.h"
+
+BOOL WINAPI Ctl3dAutoSubclass(HINSTANCE hInst)
+{
+    return TRUE;
+}
+
+BOOL WINAPI Ctl3dAutoSubclassEx(HINSTANCE hInst, DWORD type)
+{
+    return TRUE;
+}
+
+BOOL WINAPI Ctl3dColorChange(void)
+{
+    return TRUE;
+}
+
+HBRUSH WINAPI Ctl3dCtlColor(HDC hdc, LONG hwnd)
+{
+    return 0;
+}
+
+HBRUSH WINAPI Ctl3dCtlColorEx(UINT msg, WPARAM wParam, LPARAM lParam)
+{
+    return 0;
+}
+
+
+LONG WINAPI Ctl3dDlgFramePaint(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+    return DefWindowProcA(hwnd, msg, wParam, lParam);
+}
+
+BOOL WINAPI Ctl3dEnabled(void)
+{
+    return FALSE;
+}
+
+WORD WINAPI Ctl3dGetVer(void)
+{
+    return MAKEWORD(31,2);
+}
+
+BOOL WINAPI Ctl3dIsAutoSubclass(void)
+{
+    return FALSE;
+}
+
+BOOL WINAPI Ctl3dRegister(HINSTANCE hInst)
+{
+    return FALSE;
+}
+
+BOOL WINAPI Ctl3dSubclassCtl(HWND hwnd)
+{
+    return FALSE;
+}
+
+BOOL WINAPI Ctl3dSubclassCtlEx(HWND hwnd, int type)
+{
+    return FALSE;
+}
+
+BOOL WINAPI Ctl3dSubclassDlg(HWND hwnd, WORD types)
+{
+    return FALSE;
+}
+
+BOOL WINAPI Ctl3dSubclassDlgEx(HWND hwnd, DWORD types)
+{
+    return FALSE;
+}
+
+BOOL WINAPI Ctl3dUnAutoSubclass(void)
+{
+    return FALSE;
+}
+
+BOOL WINAPI Ctl3dUnregister(HINSTANCE hInst)
+{
+    return TRUE;
+}
+
+
+BOOL WINAPI Ctl3dUnsubclassCtl(HWND hwnd)
+{
+    return FALSE;
+}
+
+void WINAPI Ctl3dWinIniChange(void)
+{
+}
diff --git a/dlls/ctl3d/ctl3d32.spec b/dlls/ctl3d/ctl3d32.spec
new file mode 100644
index 00000000000..83ee673d12e
--- /dev/null
+++ b/dlls/ctl3d/ctl3d32.spec
@@ -0,0 +1,25 @@
+@ stub BtnWndProc3d
+@ stub ComboWndProc3d
+@ stdcall Ctl3dAutoSubclass(long) Ctl3dAutoSubclass
+@ stdcall Ctl3dAutoSubclassEx(long long) Ctl3dAutoSubclassEx
+@ stdcall Ctl3dColorChange() Ctl3dColorChange
+@ stdcall Ctl3dCtlColor(long long) Ctl3dCtlColor
+@ stdcall Ctl3dCtlColorEx(long long long) Ctl3dCtlColorEx
+@ stdcall Ctl3dDlgFramePaint(long long long long) Ctl3dDlgFramePaint
+@ stub Ctl3dDlgProc
+@ stdcall Ctl3dEnabled() Ctl3dEnabled
+@ stdcall Ctl3dGetVer() Ctl3dGetVer
+@ stdcall Ctl3dIsAutoSubclass() Ctl3dIsAutoSubclass
+@ stdcall Ctl3dRegister(long) Ctl3dRegister
+@ stub Ctl3dSetStyle
+@ stdcall Ctl3dSubclassCtl(long) Ctl3dSubclassCtl
+@ stdcall Ctl3dSubclassCtlEx(long long) Ctl3dSubclassCtlEx
+@ stdcall Ctl3dSubclassDlg(long long) Ctl3dSubclassDlg
+@ stdcall Ctl3dSubclassDlgEx(long long) Ctl3dSubclassDlgEx
+@ stdcall Ctl3dUnAutoSubclass() Ctl3dUnAutoSubclass
+@ stdcall Ctl3dUnregister(long) Ctl3dUnregister
+@ stdcall Ctl3dUnsubclassCtl(long) Ctl3dUnsubclassCtl
+@ stdcall Ctl3dWinIniChange() Ctl3dWinIniChange
+@ stub EditWndProc3d
+@ stub ListWndProc3d
+@ stub StaticWndProc3d
diff --git a/dlls/ctl3d/ctl3dv2.spec b/dlls/ctl3d/ctl3dv2.spec
new file mode 100644
index 00000000000..7a40513d533
--- /dev/null
+++ b/dlls/ctl3d/ctl3dv2.spec
@@ -0,0 +1,25 @@
+1  pascal16 Ctl3dGetVer() Ctl3dGetVer16
+2  pascal16 Ctl3dSubclassDlg(word word) Ctl3dSubclassDlg16
+3  pascal16 Ctl3dSubclassCtl(word) Ctl3dSubclassCtl16
+4  pascal16 Ctl3dCtlColor(word long) Ctl3dCtlColor16
+5  pascal16 Ctl3dEnabled() Ctl3dEnabled16
+6  pascal16 Ctl3dColorChange() Ctl3dColorChange16
+7  stub BtnWndProc3d
+8  stub EditWndProc3d
+9  stub ListWndProc3d
+10 stub ComboWndProc3d
+11 stub StaticWndProc3d
+12 pascal16 Ctl3dRegister(word) Ctl3dRegister16
+13 pascal16 Ctl3dUnregister(word) Ctl3dUnregister16
+16 pascal16 Ctl3dAutoSubclass(word) Ctl3dAutoSubclass16
+17 stub Ctl3dDlgProc
+18 pascal16 Ctl3dCtlColorEx(word word long) Ctl3dCtlColorEx16
+19 stub Ctl3dSetStyle
+20 pascal Ctl3dDlgFramePaint(word word word long) Ctl3dDlgFramePaint16
+21 pascal16 Ctl3dSubclassDlgEx(word long) Ctl3dSubclassDlgEx16
+22 pascal16 Ctl3dWinIniChange() Ctl3dWinIniChange16
+23 pascal16 Ctl3dIsAutoSubclass() Ctl3dIsAutoSubclass16
+24 pascal16 Ctl3dUnAutoSubclass() Ctl3dUnAutoSubclass16
+25 pascal16 Ctl3dSubclassCtlEx(word word) Ctl3dSubclassCtlEx16
+26 pascal16 Ctl3dUnsubclassCtl(word) Ctl3dUnsubclassCtl16
+27 pascal16 Ctl3dAutoSubclassEx(word long) Ctl3dAutoSubclassEx16
diff --git a/dlls/user/user32.spec b/dlls/user/user32.spec
index fb560c73601..d20e5f60f08 100644
--- a/dlls/user/user32.spec
+++ b/dlls/user/user32.spec
@@ -666,6 +666,7 @@
 @ stdcall CloseDriver16(long long long) CloseDriver16
 @ stdcall CreateDialogIndirectParam16(long ptr long long long) CreateDialogIndirectParam16
 @ stdcall DefDriverProc16(long long long long long) DefDriverProc16
+@ stdcall DefWindowProc16(long long long long) DefWindowProc16
 @ stdcall DestroyIcon32(long long) DestroyIcon32
 @ stdcall DialogBoxIndirectParam16(long long long long long) DialogBoxIndirectParam16
 @ stdcall GetDriverModuleHandle16(long) GetDriverModuleHandle16
-- 
GitLab