msgdump.h undocumented drag & drop support (#1359)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Sat, 16 Feb 2019 08:27:25 +0000 (17:27 +0900)
committerGitHub <noreply@github.com>
Sat, 16 Feb 2019 08:27:25 +0000 (17:27 +0900)
In sdk/include/reactos/msgdump.h, support Drag & Drop undocumented messages.

sdk/include/reactos/msgdump.h
sdk/include/reactos/winxx.h

index 696cbb7..f69fd4a 100644 (file)
@@ -5,7 +5,7 @@
  * COPYRIGHT:   Copyright 2018 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
  */
 #ifndef _INC_MSGDUMP
-#define _INC_MSGDUMP
+#define _INC_MSGDUMP    2   /* Version 2 */
 
 /*
  * NOTE: MD_msgdump function in this file provides Win32API message dump feature.
@@ -14,7 +14,9 @@
  */
 #pragma once
 
-#include "winxx.h"      /* An unofficial extension of <windowsx.h>. */
+#ifndef _INC_WINXX
+    #include "winxx.h"      /* An unofficial extension of <windowsx.h>. */
+#endif
 #include <strsafe.h>
 
 #ifndef MSGDUMP_TPRINTF
@@ -938,6 +940,56 @@ MD_MDIGetActive(HWND hwnd)
     return NULL;
 }
 
+#ifdef _UNDOCUSER_H
+    static __inline LRESULT MSGDUMP_API
+    MD_OnDropObject(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sWM_DROPOBJECT(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+        return 0;
+    }
+
+    static __inline LRESULT MSGDUMP_API
+    MD_OnQueryDropObject(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sWM_QUERYDROPOBJECT(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+        return 0;
+    }
+
+    static __inline LRESULT MSGDUMP_API
+    MD_OnBeginDrag(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sWM_BEGINDRAG(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+        return 0;
+    }
+
+    static __inline LRESULT MSGDUMP_API
+    MD_OnDragLoop(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sWM_DRAGLOOP(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+        return 0;
+    }
+
+    static __inline LRESULT MSGDUMP_API
+    MD_OnDragSelect(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sWM_DRAGSELECT(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+        return 0;
+    }
+
+    static __inline LRESULT MSGDUMP_API
+    MD_OnDragMove(HWND hwnd, WPARAM wParam, LPARAM lParam)
+    {
+        MSGDUMP_TPRINTF(TEXT("%sWM_DRAGMOVE(hwnd:%p, wParam:%p, lParam:%p)\n"),
+                        MSGDUMP_PREFIX, (void *)hwnd, (void *)wParam, (void *)lParam);
+        return 0;
+    }
+#endif
+
 static __inline HMENU MSGDUMP_API
 MD_MDISetMenu(HWND hwnd, BOOL fRefresh, HMENU hmenuFrame, HMENU hmenuWindow)
 {
@@ -2916,6 +2968,14 @@ MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
         HANDLE_MSG(hwnd, WM_MDICASCADE, MD_MDICascade);
         HANDLE_MSG(hwnd, WM_MDIICONARRANGE, MD_MDIIconArrange);
         HANDLE_MSG(hwnd, WM_MDIGETACTIVE, MD_MDIGetActive);
+#ifdef _UNDOCUSER_H
+        HANDLE_MSG(hwnd, WM_DROPOBJECT, MD_OnDropObject);
+        HANDLE_MSG(hwnd, WM_QUERYDROPOBJECT, MD_OnQueryDropObject);
+        HANDLE_MSG(hwnd, WM_BEGINDRAG, MD_OnBeginDrag);
+        HANDLE_MSG(hwnd, WM_DRAGLOOP, MD_OnDragLoop);
+        HANDLE_MSG(hwnd, WM_DRAGSELECT, MD_OnDragSelect);
+        HANDLE_MSG(hwnd, WM_DRAGMOVE, MD_OnDragMove);
+#endif
         HANDLE_MSG(hwnd, WM_MDISETMENU, MD_MDISetMenu);
         HANDLE_MSG(hwnd, WM_ENTERSIZEMOVE, MD_OnEnterSizeMove);
         HANDLE_MSG(hwnd, WM_EXITSIZEMOVE, MD_OnExitSizeMove);
index b7538de..beb4a53 100644 (file)
@@ -2,11 +2,11 @@
  * PROJECT:     ReactOS header files
  * LICENSE:     CC-BY-4.0 (https://spdx.org/licenses/CC-BY-4.0.html)
  * PURPOSE:     An unofficial extension of <windowsx.h>
- * COPYRIGHT:   Copyright 2017-2018 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
+ * COPYRIGHT:   Copyright 2017-2019 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
  */
 
 #ifndef _INC_WINXX
-#define _INC_WINXX
+#define _INC_WINXX      2   /* Version 2 */
 
 #pragma once
 
@@ -26,7 +26,7 @@
 #ifndef HANDLE_WM_NULL
 #define HANDLE_WM_NULL(hwnd, wParam, lParam, fn) \
     ((fn)((hwnd)), 0L)
-#define FORWARD_WM_NULL(hwnd, compactRatio, fn) \
+#define FORWARD_WM_NULL(hwnd, fn) \
     (void)((fn)((hwnd), WM_NULL, 0, 0L), 0L)
 #endif
 
 #define HANDLE_SBM_GETSCROLLBARINFO(hwnd, wParam, lParam, fn) \
     (LRESULT)(INT_PTR)(BOOL)(fn)((hwnd), (LPSCROLLBARINFO)(lParam))
 
+#ifdef _UNDOCUSER_H     /* UNDOCUMENTED */
+    /* LRESULT Cls_OnDropObject(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #ifndef HANDLE_WM_DROPOBJECT
+    #define HANDLE_WM_DROPOBJECT(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+    #define FORWARD_WM_DROPOBJECT(hwnd, wParam, lParam, fn) \
+        (LRESULT)((fn)((hwnd), WM_DROPOBJECT, wParam, lParam))
+    #endif
+
+    /* LRESULT Cls_OnQueryDropObject(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #ifndef HANDLE_WM_QUERYDROPOBJECT
+    #define HANDLE_WM_QUERYDROPOBJECT(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+    #define FORWARD_WM_QUERYDROPOBJECT(hwnd, wParam, lParam, fn) \
+        (LRESULT)((fn)((hwnd), WM_QUERYDROPOBJECT, wParam, lParam))
+    #endif
+
+    /* LRESULT Cls_OnBeginDrag(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #ifndef HANDLE_WM_BEGINDRAG
+    #define HANDLE_WM_BEGINDRAG(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+    #define FORWARD_WM_BEGINDRAG(hwnd, wParam, lParam, fn) \
+        (LRESULT)((fn)((hwnd), WM_BEGINDRAG, wParam, lParam))
+    #endif
+
+    /* LRESULT Cls_OnDragLoop(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #ifndef HANDLE_WM_DRAGLOOP
+    #define HANDLE_WM_DRAGLOOP(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+    #define FORWARD_WM_DRAGLOOP(hwnd, wParam, lParam, fn) \
+        (LRESULT)((fn)((hwnd), WM_DRAGLOOP, wParam, lParam))
+    #endif
+
+    /* LRESULT Cls_OnDragSelect(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #ifndef HANDLE_WM_DRAGSELECT
+    #define HANDLE_WM_DRAGSELECT(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+    #define FORWARD_WM_DRAGSELECT(hwnd, wParam, lParam, fn) \
+        (LRESULT)((fn)((hwnd), WM_DRAGSELECT, wParam, lParam))
+    #endif
+
+    /* LRESULT Cls_OnDragMove(HWND hwnd, WPARAM wParam, LPARAM lParam) */
+    #ifndef HANDLE_WM_DRAGMOVE
+    #define HANDLE_WM_DRAGMOVE(hwnd, wParam, lParam, fn) \
+        (LRESULT)(fn)((hwnd), (wParam), (lParam))
+    #define FORWARD_WM_DRAGMOVE(hwnd, wParam, lParam, fn) \
+        (LRESULT)((fn)((hwnd), WM_DRAGMOVE, wParam, lParam))
+    #endif
+#endif
+
 #endif