aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/General/gen_ml/reflectmsg.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/General/gen_ml/reflectmsg.h')
-rw-r--r--Src/Plugins/General/gen_ml/reflectmsg.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/Src/Plugins/General/gen_ml/reflectmsg.h b/Src/Plugins/General/gen_ml/reflectmsg.h
new file mode 100644
index 00000000..1e7224c6
--- /dev/null
+++ b/Src/Plugins/General/gen_ml/reflectmsg.h
@@ -0,0 +1,50 @@
+#ifndef NULLOSFT_MEDIALIBRARY_REFLECTED_MESSAGES_HEADER
+#define NULLOSFT_MEDIALIBRARY_REFLECTED_MESSAGES_HEADER
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#include <windows.h>
+
+// reflected messages will pass this as lParam
+typedef struct _REFLECTPARAM
+{
+ LRESULT result; // return result here. If refleting window is dialog it is responsible to set result using SetWindowlongPtr.
+ LPARAM lParam; // orginal lParam
+ HWND hwndFrom; // reflecting window
+}REFLECTPARAM, *PREFLECTPARAM;
+
+
+
+// reflected messages
+// you need to return TRUE if you procesed a message otherwise FALSE
+#define REFLECT_BASE (WM_APP + 0x3000)
+
+#define WM_SUPPORTREFLECT (REFLECT_BASE + 0x0000) // wParam = (WPARM)(UINT)testMessageCode. Return TRUE if you suport message reflecting
+
+#define REFLECTED_DRAWITEM (REFLECT_BASE + WM_DRAWITEM)
+#define REFLECTED_CTLCOLORBTN (REFLECT_BASE + WM_CTLCOLORBTN)
+#define REFLECTED_CTLCOLOREDIT (REFLECT_BASE + WM_CTLCOLOREDIT)
+#define REFLECTED_CTLCOLORLISTBOX (REFLECT_BASE + WM_CTLCOLORLISTBOX)
+#define REFLECTED_CTLCOLORSCROLLBAR (REFLECT_BASE + WM_CTLCOLORSCROLLBAR)
+#define REFLECTED_CTLCOLORSTATIC (REFLECT_BASE + WM_CTLCOLORSTATIC)
+#define REFLECTED_NOTIFY (REFLECT_BASE + WM_NOTIFY)
+#define REFLECTED_COMMAND (REFLECT_BASE + WM_COMMAND)
+#define REFLECTED_MEASUREITEM (REFLECT_BASE + WM_MEASUREITEM)
+
+
+#ifdef __cplusplus
+#define REFLECTMESSAGE(hwnd, uMsg, wParam, lParam) (BOOL)::SendMessage((hwnd), (REFLECT_BASE + (uMsg)), (wParam), (lParam))
+#else
+#define REFLECTMESSAGE(hwnd, uMsg, wParam, lParam) (BOOL)SendMessage((hwnd), (REFLECT_BASE + (uMsg)), (wParam), (lParam))
+#endif
+
+BOOL CanReflect(UINT uMsg);
+BOOL ReflectMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL bDialog, LRESULT *pResult);
+
+HRESULT InstallReflector(HWND hwnd); // this is installs simple window hook that allows reflection code to run.
+ // returns , S_OK - hook installed, S_FALSE in case hook already installed, E_XXX - something bad
+BOOL RemoveReflector(HWND hwnd); // returns TRUE if window was reflecting
+
+#endif // NULLOSFT_MEDIALIBRARY_REFLECTED_MESSAGES_HEADER