aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Library/ml_devices/widget.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Library/ml_devices/widget.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Plugins/Library/ml_devices/widget.h')
-rw-r--r--Src/Plugins/Library/ml_devices/widget.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/Src/Plugins/Library/ml_devices/widget.h b/Src/Plugins/Library/ml_devices/widget.h
new file mode 100644
index 00000000..673dcd5f
--- /dev/null
+++ b/Src/Plugins/Library/ml_devices/widget.h
@@ -0,0 +1,129 @@
+#ifndef _NULLSOFT_WINAMP_ML_DEVICES_WIDGET_HEADER
+#define _NULLSOFT_WINAMP_ML_DEVICES_WIDGET_HEADER
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#include <wtypes.h>
+#include "./widgetStyle.h"
+
+#define WIDGET_WINDOW_CLASS L"NullsoftDevicesWidget"
+
+
+typedef BOOL (*WidgetInitCallback)(HWND /*hwnd*/, void** /*self_out*/, void* /*param*/);
+typedef void (*WidgetDestroyCallback)(void* /*self*/, HWND /*hwnd*/);
+typedef void (*WidgetLayoutCallback)(void* /*self*/, HWND /*hwnd*/, WidgetStyle* /*style*/, const RECT* /*clientRect*/, SIZE* /*viewSize*/, BOOL /*redraw*/);
+typedef BOOL (*WidgetPaintCallback)(void* /*self*/, HWND /*hwnd*/, WidgetStyle* /*style*/, HDC /*hdc*/, const RECT* /*paintRect*/, BOOL /*erase*/);
+typedef BOOL (*WidgetMessageCallback)(void* /*self*/, HWND /*hwnd*/, unsigned int /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, LRESULT* /*result*/);
+typedef void (*WidgetStyleCallback)(void* /*self*/, HWND /*hwnd*/, WidgetStyle* /*style*/);
+typedef BOOL (*WidgetMouseCallback)(void* /*self*/, HWND /*hwnd*/, unsigned int /*vKeys*/, const POINT* /*cursor*/);
+typedef INT (*WidgetInputCallback)(void* /*self*/, HWND /*hwnd*/, unsigned int /*vKey*/, MSG* /*message*/);
+typedef BOOL (*WidgetKeyCallback)(void* /*self*/, HWND /*hwnd*/, unsigned int /*vKey*/, unsigned int /*flags*/);
+typedef void (*WidgetFocusCallback)(void* /*self*/, HWND /*hwnd*/, HWND /*focusHwnd*/, BOOL /*focusReceived*/);
+typedef BOOL (*WidgetMenuCallback)(void* /*self*/, HWND /*hwnd*/, HWND /*targetWindow*/, const POINT* /*cursor*/);
+typedef void (*WidgetZoomCallback)(void* /*self*/, HWND /*hwnd*/, NMTRBTHUMBPOSCHANGING* /*sliderInfo*/);
+typedef void (*WidgetScrollCallback)(void* /*self*/, HWND /*hwnd*/, int* /*dx*/, int* /*dy*/);
+typedef BOOL (*WidgetNotifyCallback)(void* /*self*/, HWND /*hwnd*/, NMHDR* /*notification*/, LRESULT* /*result*/);
+typedef BOOL (*WidgetHelpCallback)(void* /*self*/, HWND /*hwnd*/, wchar_t* /*buffer*/, size_t /*bufferMax*/);
+
+typedef struct WidgetInterface
+{
+ WidgetInitCallback init;
+ WidgetDestroyCallback destroy;
+ WidgetLayoutCallback layout;
+ WidgetPaintCallback paint;
+ WidgetStyleCallback styleColorChanged;
+ WidgetStyleCallback styleFontChanged;
+ WidgetMouseCallback mouseMove;
+ WidgetMouseCallback leftButtonDown;
+ WidgetMouseCallback leftButtonUp;
+ WidgetMouseCallback leftButtonDblClk;
+ WidgetMouseCallback rightButtonDown;
+ WidgetMouseCallback rightButtonUp;
+ WidgetKeyCallback keyDown;
+ WidgetKeyCallback keyUp;
+ WidgetKeyCallback character;
+ WidgetInputCallback inputRequest;
+ WidgetFocusCallback focusChanged;
+ WidgetMenuCallback contextMenu;
+ WidgetZoomCallback zoomChanging;
+ WidgetScrollCallback scrollBefore;
+ WidgetScrollCallback scroll;
+ WidgetNotifyCallback notify;
+ WidgetHelpCallback help;
+ WidgetMessageCallback messageProc;
+} WidgetInterface;
+
+HWND
+Widget_CreateWindow(unsigned int type,
+ const WidgetInterface *callbacks,
+ const wchar_t *text,
+ unsigned long windowExStyle,
+ unsigned long windowStyle,
+ int x,
+ int y,
+ int width,
+ int height,
+ HWND parentWindow,
+ unsigned int controlId,
+ void *param);
+
+
+#define WIDGET_WM_FIRST (WM_USER + 10)
+
+#define WIDGET_WM_GET_TYPE (WIDGET_WM_FIRST + 0)
+#define WIDGET_GET_TYPE(/*HWND*/ _hwnd)\
+ ((unsigned int)SendMessageW((_hwnd), WIDGET_WM_GET_TYPE, 0, 0L))
+
+#define WIDGET_WM_GET_SELF (WIDGET_WM_FIRST + 1)
+#define WIDGET_GET_SELF(/*HWND*/ _hwnd, _type)\
+ ((_type*)SendMessageW((_hwnd), WIDGET_WM_GET_SELF, 0, 0L))
+
+#define WIDGET_WM_SET_STYLE (WIDGET_WM_FIRST + 2)
+#define WIDGET_SET_STYLE(/*HWND*/ _hwnd, /*WidgetStyle* */ _style)\
+ ((BOOL)SendMessageW((_hwnd), WIDGET_WM_SET_STYLE, 0, (LPARAM)(_style)))
+
+#define WIDGET_WM_GET_STYLE (WIDGET_WM_FIRST + 3)
+#define WIDGET_GET_STYLE(/*HWND*/ _hwnd)\
+ ((WidgetStyle*)SendMessageW((_hwnd), WIDGET_WM_GET_STYLE, 0, 0L))
+
+#define WIDGET_WM_STYLE_COLOR_CHANGED (WIDGET_WM_FIRST + 4)
+#define WIDGET_STYLE_COLOR_CHANGED(/*HWND*/ _hwnd)\
+ (SendMessageW((_hwnd), WIDGET_WM_STYLE_COLOR_CHANGED, 0, 0L))
+
+#define WIDGET_WM_STYLE_FONT_CHANGED (WIDGET_WM_FIRST + 5)
+#define WIDGET_STYLE_FONT_CHANGED(/*HWND*/ _hwnd)\
+ (SendMessageW((_hwnd), WIDGET_WM_STYLE_FONT_CHANGED, 0, 0L))
+
+#define WIDGET_WM_FREEZE (WIDGET_WM_FIRST + 6)
+#define WIDGET_FREEZE(/*HWND*/ _hwnd)\
+ (SendMessageW((_hwnd), WIDGET_WM_FREEZE, TRUE, 0L))
+#define WIDGET_THAW(/*HWND*/ _hwnd)\
+ (SendMessageW((_hwnd), WIDGET_WM_FREEZE, FALSE, 0L))
+
+#define WIDGET_WM_SET_SCROLL_POS (WIDGET_WM_FIRST + 7) // just offsets scroll positions wihtout scrolling view. result = (LRESULT)MAKELPARAM(actualDx,actualDy).
+#define WIDGET_SET_SCROLL_POS(/*HWND*/ _hwnd, /*int*/ _dx, /*int*/ _dy, /*BOOL*/ _redraw)\
+ (SendMessageW((_hwnd), WIDGET_WM_SET_SCROLL_POS, (WPARAM)(_redraw), MAKELPARAM((_dx), (_dy))))
+
+#define WIDGET_WM_SCROLL (WIDGET_WM_FIRST + 8)
+#define WIDGET_SCROLL(/*HWND*/ _hwnd, /*int*/ _dx, /*int*/ _dy, /*BOOL*/ _redraw)\
+ ((BOOL)SendMessageW((_hwnd), WIDGET_WM_SCROLL, (WPARAM)(_redraw), MAKELPARAM((_dx), (_dy))))
+
+#define WIDGET_WM_ZOOM_SLIDER_POS_CHANGING (WIDGET_WM_FIRST + 9)
+#define WIDGET_ZOOM_SLIDER_POS_CHANGING(/*HWND*/ _hwnd, /*NMTRBTHUMBPOSCHANGING* */ _sliderInfo)\
+ ((BOOL)SendMessageW((_hwnd), WIDGET_WM_ZOOM_SLIDER_POS_CHANGING, 0, (LPARAM)(_sliderInfo)))
+
+#define WIDGET_WM_ENABLE_CHILDREN_SCROLL (WIDGET_WM_FIRST + 10)
+#define WIDGET_ENABLE_CHILDREN_SCROLL(/*HWND*/ _hwnd, /*BOOL*/ _enable)\
+ ((BOOL)SendMessageW((_hwnd), WIDGET_WM_ENABLE_CHILDREN_SCROLL, 0, (LPARAM)(_enable)))
+
+#define WIDGET_WM_GET_CHILDREN_SCROLL_ENABLED (WIDGET_WM_FIRST + 11)
+#define WIDGET_GET_CHILDREN_SCROLL_ENABLED(/*HWND*/ _hwnd)\
+ ((BOOL)SendMessageW((_hwnd), WIDGET_WM_GET_CHILDREN_SCROLL_ENABLED, 0, 0L))
+
+#define WIDGET_WM_GET_HELP_URL (WIDGET_WM_FIRST + 12)
+#define WIDGET_GET_HELP_URL(/*HWND*/ _hwnd, /* wchar_t* */ _buffer, /*size_t*/ _bufferMax)\
+ ((BOOL)SendMessageW((_hwnd), WIDGET_WM_GET_HELP_URL, (WPARAM)(_bufferMax), (LPARAM)(_buffer)))
+
+#endif //_NULLSOFT_WINAMP_ML_DEVICES_WIDGET_HEADER \ No newline at end of file