[2/2] msvideo: Add support for 16-bit MCIWndProc.
Dmitry Timoshkov
dmitry at baikal.ru
Thu Sep 10 23:27:54 CDT 2015
For bug 29646.
---
dlls/msvideo.dll16/Makefile.in | 2 +-
dlls/msvideo.dll16/msvideo16.c | 26 +++++++++++++++++++++++---
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/dlls/msvideo.dll16/Makefile.in b/dlls/msvideo.dll16/Makefile.in
index e08205e..5f7a9a4 100644
--- a/dlls/msvideo.dll16/Makefile.in
+++ b/dlls/msvideo.dll16/Makefile.in
@@ -1,5 +1,5 @@
MODULE = msvideo.dll16
-IMPORTS = msvfw32 version advapi32
+IMPORTS = msvfw32 version advapi32 user32
EXTRADLLFLAGS = -m16 -Wb,--main-module,msvfw32.dll
diff --git a/dlls/msvideo.dll16/msvideo16.c b/dlls/msvideo.dll16/msvideo16.c
index e6c6c1e..1b715e4 100644
--- a/dlls/msvideo.dll16/msvideo16.c
+++ b/dlls/msvideo.dll16/msvideo16.c
@@ -981,11 +981,31 @@ BOOL CDECL MCIWndRegisterClass16(void)
return MCIWndRegisterClass();
}
+static LRESULT (WINAPI *pMCIWndProc)(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
+
+static LRESULT WINAPI MCIWndProc16(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+ switch (msg)
+ {
+ case MCIWNDM_SENDSTRINGA:
+ lparam = (ULONG_PTR)MapSL(lparam);
+ break;
+
+ default:
+ break;
+ }
+
+ return CallWindowProcA(pMCIWndProc, hwnd, msg, wparam, lparam);
+}
+
/***********************************************************************
* MCIWndCreate(MSVIDEO.250)
*/
-HWND16 CDECL MCIWndCreate16(HWND16 hwnd, HINSTANCE16 hinst16,
- DWORD style, LPSTR file)
+HWND16 CDECL MCIWndCreate16(HWND16 parent, HINSTANCE16 hinst16,
+ DWORD style, LPSTR file)
{
- return HWND_16(MCIWndCreateA(HWND_32(hwnd), 0, style, file));
+ HWND hwnd = MCIWndCreateA(HWND_32(parent), 0, style, file);
+ if (hwnd)
+ pMCIWndProc = (void *)SetWindowLongPtrA(hwnd, GWLP_WNDPROC, (ULONG_PTR)MCIWndProc16);
+ return HWND_16(hwnd);
}
--
2.4.8
More information about the wine-patches
mailing list