diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Library/ml_devices/widget.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-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.h | 129 |
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 |