aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/xuioswndhost.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/xuioswndhost.h')
-rw-r--r--Src/Wasabi/api/skin/widgets/xuioswndhost.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/xuioswndhost.h b/Src/Wasabi/api/skin/widgets/xuioswndhost.h
new file mode 100644
index 00000000..05359563
--- /dev/null
+++ b/Src/Wasabi/api/skin/widgets/xuioswndhost.h
@@ -0,0 +1,78 @@
+#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