winamp/Src/Wasabi/api/skin/widgets/xuioswndhost.h
2024-09-24 14:54:57 +02:00

79 lines
2.2 KiB
C++

#ifndef __OSWndHost_H
#define __OSWndHost_H
#include <api/wnd/wndclass/guiobjwnd.h>
#include <api/wnd/wndclass/oswndhost.h>
#define XUIOSWNDHOST_PARENT GuiObjectWnd
#define DCB_OSWNDHOST_REQUEST_IDEAL_SIZE 2048
#define OSWNDHOST_REQUEST_IDEAL_SIZE WM_USER + DCB_OSWNDHOST_REQUEST_IDEAL_SIZE
class DCBIdealSize {
public:
DCBIdealSize(int idealwidth, int idealheight) : m_idealwidth(idealwidth), m_idealheight(idealheight) {}
int m_idealwidth;
int m_idealheight;
};
// -----------------------------------------------------------------------
class XuiOSWndHost : public XUIOSWNDHOST_PARENT, public OSWndHostI
{
public:
XuiOSWndHost();
virtual ~XuiOSWndHost();
virtual int onPaint(Canvas *c);
virtual int setXuiParam(int xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value);
virtual int wantRedrawOnResize() { return 0; }
virtual int onAfterResize();
void setHWND(const char *hwnd);
HWND getHWND() { return wnd; }
void setHWND(HWND hwnd) { wnd = hwnd; }
virtual void oswndhost_host(HWND oswnd);
virtual void oswndhost_unhost();
virtual void oswndhost_setRegionOffsets(RECT *r);
virtual int onUserMessage(int msg, int w, int l, int *r);
virtual int onDeferredCallback(intptr_t p1, intptr_t p2);
virtual void onBeforeReparent(int host);
virtual void onAfterReparent(int host);
virtual int handleRatio() { return 0; }
virtual int handleDesktopAlpha() { return 0; }
void onSetVisible(int show);
protected:
/*static */void CreateXMLParameters(int master_handle);
private:
void doOnResize();
void doHost();
enum {
XUIOSWNDHOST_SETHWND = 0,
XUIOSWNDHOST_SETOFFSETS = 1,
};
static XMLParamPair params[];
int myxuihandle;
RECT regionrect;
int hasregionrect;
HWND wnd;
HWND oldparent;
DWORD savedStyle;
DWORD savedExStyle;
RECT oldrect;
bool hosted;
int visible_start_state;
};
// -----------------------------------------------------------------------
extern const wchar_t OSWndHostXuiObjectStr[];
extern char OSWndHostXuiSvcName[];
class OSWndHostXuiSvc : public XuiObjectSvc<XuiOSWndHost, OSWndHostXuiObjectStr, OSWndHostXuiSvcName> {};
#endif