276 lines
9.4 KiB
C
276 lines
9.4 KiB
C
|
#ifndef _ROOTWND_H
|
||
|
#define _ROOTWND_H
|
||
|
|
||
|
#include "api_window.h"
|
||
|
#include <bfc/wasabi_std.h>
|
||
|
#include <bfc/dispatch.h>
|
||
|
#include <api/wnd/cursor.h>
|
||
|
|
||
|
class ifc_canvas;
|
||
|
class api_region;
|
||
|
class TimerClient;
|
||
|
class ifc_dependent;
|
||
|
class GuiObject;
|
||
|
class FindObjectCallback;
|
||
|
class Cursor;
|
||
|
class Accessible;
|
||
|
class Canvas;
|
||
|
|
||
|
// only these methods are safe across dll boundaries
|
||
|
// this is the pointer you find in the GWL_USERDATA of a window
|
||
|
|
||
|
class DragInterface;
|
||
|
|
||
|
class NOVTABLE RootWndI : public ifc_window
|
||
|
{
|
||
|
protected:
|
||
|
RootWndI() {} // protect constructor
|
||
|
|
||
|
public:
|
||
|
virtual OSWINDOWHANDLE getOsWindowHandle()=0;
|
||
|
virtual OSMODULEHANDLE getOsModuleHandle()=0;
|
||
|
virtual void performBatchProcesses()=0;
|
||
|
virtual TimerClient *getTimerClient()=0;
|
||
|
virtual const wchar_t *getRootWndName()=0;
|
||
|
virtual const wchar_t *getId()=0;
|
||
|
virtual int init(ifc_window *parent, int nochild)=0;
|
||
|
virtual int isInited()=0;
|
||
|
virtual int isPostOnInit()=0;
|
||
|
|
||
|
virtual int setVirtual(int i)=0;
|
||
|
|
||
|
virtual int isClickThrough()=0;
|
||
|
virtual int onMouseMove(int x, int y)=0;
|
||
|
virtual int onLeftButtonUp(int x, int y)=0;
|
||
|
virtual int onRightButtonUp(int x, int y)=0;
|
||
|
virtual int onLeftButtonDown(int x, int y)=0;
|
||
|
virtual int onRightButtonDown(int x, int y)=0;
|
||
|
virtual int onLeftButtonDblClk(int x, int y)=0;
|
||
|
virtual int onRightButtonDblClk(int x, int y)=0;
|
||
|
|
||
|
virtual DragInterface *getDragInterface()=0;
|
||
|
|
||
|
virtual int getCursorType(int x, int y)=0;
|
||
|
virtual OSCURSORHANDLE getCustomCursor(int x, int y)=0;
|
||
|
virtual ifc_window *rootWndFromPoint(POINT *pt)=0;
|
||
|
|
||
|
virtual void getClientRect(RECT *r)=0;
|
||
|
virtual void getNonClientRect(RECT *rect)=0;
|
||
|
virtual void getWindowRect(RECT *r)=0;
|
||
|
|
||
|
virtual void setVisible(int show)=0;
|
||
|
virtual void setCloaked(int cloak)=0;
|
||
|
virtual void onSetVisible(int show)=0;
|
||
|
virtual int isVisible(int within=0)=0;
|
||
|
|
||
|
virtual void *getInterface(GUID interface_guid)=0;
|
||
|
|
||
|
virtual void invalidate()=0;
|
||
|
virtual void invalidateRect(RECT *r)=0;
|
||
|
virtual void invalidateRgn(api_region *r)=0;
|
||
|
virtual void invalidateFrom(ifc_window *who)=0;
|
||
|
virtual void invalidateRectFrom(RECT *r, ifc_window *who)=0;
|
||
|
virtual void invalidateRgnFrom(api_region *r, ifc_window *who)=0;
|
||
|
virtual void validate()=0;
|
||
|
virtual void validateRect(RECT *r)=0;
|
||
|
virtual void validateRgn(api_region *reg)=0;
|
||
|
virtual void onChildInvalidate(api_region *r, ifc_window *who)=0;
|
||
|
|
||
|
virtual int rootwnd_paintTree(ifc_canvas *canvas, api_region *r)=0;
|
||
|
virtual int paint (Canvas *canvas, api_region *r)=0;
|
||
|
virtual Canvas *getFrameBuffer()=0;
|
||
|
|
||
|
virtual ifc_window *getParent()=0;
|
||
|
virtual ifc_window *getRootParent()=0;
|
||
|
virtual ifc_window *getDesktopParent()=0;
|
||
|
virtual void setParent(ifc_window *parent)=0;
|
||
|
|
||
|
virtual int onSiblingInvalidateRgn(api_region *r, ifc_window *who, int who_idx, int my_idx)=0;
|
||
|
virtual int wantSiblingInvalidations()=0;
|
||
|
|
||
|
virtual int cascadeRepaintFrom(ifc_window *who, int pack=1)=0;
|
||
|
virtual int cascadeRepaintRgnFrom(api_region *reg, ifc_window *who, int pack=1)=0;
|
||
|
virtual int cascadeRepaintRectFrom(RECT *r, ifc_window *who, int pack=1)=0;
|
||
|
virtual int cascadeRepaint(int pack=1)=0;
|
||
|
virtual int cascadeRepaintRgn(api_region *reg, int pack=1)=0;
|
||
|
virtual int cascadeRepaintRect(RECT *r, int pack=1)=0;
|
||
|
virtual void repaint()=0;
|
||
|
|
||
|
virtual void setClickThrough(int ct)=0;
|
||
|
virtual ifc_window *getBaseTextureWindow()=0;
|
||
|
virtual void rootwnd_renderBaseTexture(ifc_canvas *c, const RECT *r, int alpha=255)=0;
|
||
|
#if defined (_WIN64)
|
||
|
virtual int childNotify(ifc_window* child, int msg, int p1, int p2) = 0;
|
||
|
#else
|
||
|
virtual int childNotify(ifc_window *child, int msg, intptr_t p1, intptr_t p2)=0;
|
||
|
#endif
|
||
|
virtual int getPreferences(int what)=0;
|
||
|
virtual void setPreferences(int what, int v)=0;
|
||
|
|
||
|
virtual api_region *getRegion()=0;
|
||
|
virtual int getRegionOp()=0;
|
||
|
virtual void setRegionOp(int op)=0;
|
||
|
virtual int isRectRgn()=0;
|
||
|
virtual void setRectRgn(int rrgn)=0;
|
||
|
virtual void invalidateWindowRegion()=0;
|
||
|
virtual api_region *getComposedRegion()=0;
|
||
|
virtual api_region *getSubtractorRegion()=0;
|
||
|
|
||
|
virtual void setStartHidden(int sh)=0;
|
||
|
virtual double getRenderRatio()=0;
|
||
|
virtual void setRenderRatio(double r)=0;
|
||
|
virtual void setRatioLinked(int l)=0;
|
||
|
virtual int handleRatio()=0;
|
||
|
virtual void resize(int x, int y, int w, int h, int wantcb=1)=0;
|
||
|
virtual void move(int x, int y)=0;
|
||
|
virtual void notifyDeferredMove(int x, int y)=0;
|
||
|
|
||
|
virtual void getPosition(POINT *pt)=0;
|
||
|
virtual ifc_window *getForwardWnd()=0;
|
||
|
|
||
|
virtual void registerRootWndChild(ifc_window *child)=0;
|
||
|
virtual void unregisterRootWndChild(ifc_window *child)=0;
|
||
|
virtual ifc_window *findRootWndChild(int x, int y, int only_virtuals=0)=0;
|
||
|
virtual ifc_window *enumRootWndChildren(int _enum)=0;
|
||
|
virtual int getNumRootWndChildren()=0;
|
||
|
|
||
|
virtual int isVirtual()=0;
|
||
|
|
||
|
virtual void bringVirtualToFront(ifc_window *w)=0;
|
||
|
virtual void bringVirtualToBack(ifc_window *w)=0;
|
||
|
virtual void bringVirtualAbove(ifc_window *w, ifc_window *b)=0;
|
||
|
virtual void bringVirtualBelow(ifc_window *w, ifc_window *b)=0;
|
||
|
virtual int checkDoubleClick(int button, int x, int y)=0;
|
||
|
|
||
|
virtual void onCancelCapture()=0;
|
||
|
virtual void cancelCapture()=0;
|
||
|
|
||
|
virtual void clientToScreen(int *x, int *y)=0;
|
||
|
virtual void screenToClient(int *x, int *y)=0;
|
||
|
|
||
|
virtual void setVirtualChildCapture(ifc_window *child)=0;
|
||
|
virtual ifc_window *getVirtualChildCapture()=0;
|
||
|
|
||
|
virtual int ptInRegion(int x, int y)=0;
|
||
|
|
||
|
virtual int onActivate()=0;
|
||
|
virtual void activate()=0;
|
||
|
virtual int onDeactivate()=0;
|
||
|
virtual int isActive()=0;
|
||
|
virtual int handleTransparency()=0;
|
||
|
virtual int handleDesktopAlpha()=0;
|
||
|
|
||
|
virtual int getNotifyId()=0;
|
||
|
virtual void setEnabled(int en)=0;
|
||
|
virtual int isEnabled(int within=0)=0;
|
||
|
virtual int onEnable(int e)=0;
|
||
|
|
||
|
virtual int getPaintingAlpha()=0;
|
||
|
virtual void getAlpha(int *active=NULL, int *inactive=NULL)=0;
|
||
|
virtual void setAlpha(int activealpha, int inactivealpha=-1)=0;
|
||
|
|
||
|
virtual void setTip(const wchar_t *tip)=0;
|
||
|
virtual int runModal()=0;
|
||
|
virtual void endModal(int retcode)=0;
|
||
|
virtual int wantAutoContextMenu()=0;
|
||
|
virtual int wantActivation()=0;
|
||
|
|
||
|
virtual void bringToFront()=0;
|
||
|
virtual void bringToBack()=0;
|
||
|
virtual void setFocus()=0;
|
||
|
virtual int gotFocus()=0;
|
||
|
virtual ifc_window *getNextVirtualFocus(ifc_window *w)=0;
|
||
|
virtual void setVirtualChildFocus(ifc_window *w)=0;
|
||
|
virtual void setVirtualTabOrder(ifc_window *w, int a)=0;
|
||
|
virtual int getVirtualTabOrder(ifc_window *w)=0;
|
||
|
virtual int wantFocus()=0;
|
||
|
virtual void setTabOrder(int a)=0;
|
||
|
virtual int getTabOrder()=0;
|
||
|
virtual ifc_window *getTab(int what=TAB_GETCURRENT)=0;
|
||
|
virtual void setAutoTabOrder()=0;
|
||
|
virtual void setVirtualAutoTabOrder(ifc_window *w)=0;
|
||
|
virtual ifc_window *getCurVirtualChildFocus()=0;
|
||
|
virtual void onSetRootFocus(ifc_window *w)=0;
|
||
|
|
||
|
virtual int onAcceleratorEvent(const wchar_t *name)=0;
|
||
|
|
||
|
virtual int onChar(unsigned int c)=0;
|
||
|
virtual int onKeyDown(int keycode)=0;
|
||
|
virtual int onKeyUp(int keycode)=0;
|
||
|
virtual int onSysKeyDown(int keyCode, int keyData)=0;
|
||
|
virtual int onSysKeyUp(int keyCode, int keyData)=0;
|
||
|
virtual int onKillFocus()=0;
|
||
|
virtual int onGetFocus()=0;
|
||
|
virtual ifc_dependent *rootwnd_getDependencyPtr()=0;
|
||
|
virtual void addMinMaxEnforcer(ifc_window *w)=0;
|
||
|
virtual void removeMinMaxEnforcer(ifc_window *w)=0;
|
||
|
virtual ifc_window *enumMinMaxEnforcer(int n)=0;
|
||
|
virtual int getNumMinMaxEnforcers()=0;
|
||
|
virtual void signalMinMaxEnforcerChanged()=0;
|
||
|
|
||
|
virtual int onAction(const wchar_t *action, const wchar_t *param=NULL, int x=-1, int y=-1, intptr_t p1=0, intptr_t p2=0, void *data=NULL, size_t datalen=0, ifc_window *source=NULL)=0;
|
||
|
|
||
|
virtual void setRenderBaseTexture(int r)=0;
|
||
|
virtual int getRenderBaseTexture()=0;
|
||
|
virtual GuiObject *getGuiObject()=0; // not guaranteed non null
|
||
|
|
||
|
virtual int getFlag(int flag)=0;
|
||
|
virtual int triggerEvent(int event, intptr_t p1, intptr_t p2)=0;
|
||
|
|
||
|
|
||
|
virtual int allowDeactivation()=0;
|
||
|
virtual void setAllowDeactivation(int allow)=0;
|
||
|
|
||
|
virtual ifc_window *findWindow(const wchar_t *id)=0;
|
||
|
virtual ifc_window *findWindowByInterface(GUID interface_guid)=0;
|
||
|
virtual ifc_window *findWindowByCallback(FindObjectCallback *cb)=0;
|
||
|
virtual ifc_window *findWindowChain(FindObjectCallback *cb, ifc_window *wcaller)=0;
|
||
|
|
||
|
virtual void focusNext()=0;
|
||
|
virtual void focusPrevious()=0;
|
||
|
|
||
|
virtual void setWindowTitle(const wchar_t *title) = 0;
|
||
|
virtual ifc_window *enumTab(int i)=0;
|
||
|
virtual int getNumTabs()=0;
|
||
|
|
||
|
virtual int getFocusOnClick()=0;
|
||
|
virtual void setFocusOnClick(int i)=0;
|
||
|
|
||
|
virtual void setNoDoubleClicks(int no)=0;
|
||
|
virtual void setNoLeftClicks(int no)=0;
|
||
|
virtual void setNoRightClicks(int no)=0;
|
||
|
virtual void setNoMouseMoves(int no)=0;
|
||
|
virtual void setNoContextMenus(int no)=0;
|
||
|
|
||
|
virtual int wantDoubleClicks()=0;
|
||
|
virtual int wantLeftClicks()=0;
|
||
|
virtual int wantRightClicks()=0;
|
||
|
virtual int wantMouseMoves()=0;
|
||
|
virtual int wantContextMenus()=0;
|
||
|
|
||
|
virtual void setDefaultCursor(Cursor *c)=0;
|
||
|
|
||
|
virtual Accessible *getAccessibleObject(int createifnotexist=1)=0;
|
||
|
virtual int accessibility_getState()=0;
|
||
|
|
||
|
#ifdef EXPERIMENTAL_INDEPENDENT_AOT
|
||
|
virtual void setAlwaysOnTop(int i)=0;
|
||
|
virtual int getAlwaysOnTop()=0;
|
||
|
#endif
|
||
|
|
||
|
#ifndef WA3COMPATIBILITY
|
||
|
virtual void setDropTarget(void *dt)=0;
|
||
|
virtual void *getDropTarget()=0;
|
||
|
#endif
|
||
|
|
||
|
virtual int isMinimized()=0;
|
||
|
virtual void maximize(int axis=MAXIMIZE_WIDTH|MAXIMIZE_HEIGHT)=0;
|
||
|
virtual void restore(int what=RESTORE_X|RESTORE_Y|RESTORE_WIDTH|RESTORE_HEIGHT)=0;
|
||
|
virtual int getRestoredRect(RECT *r)=0;
|
||
|
|
||
|
protected:
|
||
|
RECVS_DISPATCH;
|
||
|
};
|
||
|
|
||
|
#endif
|