rootwnd.h 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. #ifndef _ROOTWND_H
  2. #define _ROOTWND_H
  3. #include "api_window.h"
  4. #include <bfc/wasabi_std.h>
  5. #include <bfc/dispatch.h>
  6. #include <api/wnd/cursor.h>
  7. class ifc_canvas;
  8. class api_region;
  9. class TimerClient;
  10. class ifc_dependent;
  11. class GuiObject;
  12. class FindObjectCallback;
  13. class Cursor;
  14. class Accessible;
  15. class Canvas;
  16. // only these methods are safe across dll boundaries
  17. // this is the pointer you find in the GWL_USERDATA of a window
  18. class DragInterface;
  19. class NOVTABLE RootWndI : public ifc_window
  20. {
  21. protected:
  22. RootWndI() {} // protect constructor
  23. public:
  24. virtual OSWINDOWHANDLE getOsWindowHandle()=0;
  25. virtual OSMODULEHANDLE getOsModuleHandle()=0;
  26. virtual void performBatchProcesses()=0;
  27. virtual TimerClient *getTimerClient()=0;
  28. virtual const wchar_t *getRootWndName()=0;
  29. virtual const wchar_t *getId()=0;
  30. virtual int init(ifc_window *parent, int nochild)=0;
  31. virtual int isInited()=0;
  32. virtual int isPostOnInit()=0;
  33. virtual int setVirtual(int i)=0;
  34. virtual int isClickThrough()=0;
  35. virtual int onMouseMove(int x, int y)=0;
  36. virtual int onLeftButtonUp(int x, int y)=0;
  37. virtual int onRightButtonUp(int x, int y)=0;
  38. virtual int onLeftButtonDown(int x, int y)=0;
  39. virtual int onRightButtonDown(int x, int y)=0;
  40. virtual int onLeftButtonDblClk(int x, int y)=0;
  41. virtual int onRightButtonDblClk(int x, int y)=0;
  42. virtual DragInterface *getDragInterface()=0;
  43. virtual int getCursorType(int x, int y)=0;
  44. virtual OSCURSORHANDLE getCustomCursor(int x, int y)=0;
  45. virtual ifc_window *rootWndFromPoint(POINT *pt)=0;
  46. virtual void getClientRect(RECT *r)=0;
  47. virtual void getNonClientRect(RECT *rect)=0;
  48. virtual void getWindowRect(RECT *r)=0;
  49. virtual void setVisible(int show)=0;
  50. virtual void setCloaked(int cloak)=0;
  51. virtual void onSetVisible(int show)=0;
  52. virtual int isVisible(int within=0)=0;
  53. virtual void *getInterface(GUID interface_guid)=0;
  54. virtual void invalidate()=0;
  55. virtual void invalidateRect(RECT *r)=0;
  56. virtual void invalidateRgn(api_region *r)=0;
  57. virtual void invalidateFrom(ifc_window *who)=0;
  58. virtual void invalidateRectFrom(RECT *r, ifc_window *who)=0;
  59. virtual void invalidateRgnFrom(api_region *r, ifc_window *who)=0;
  60. virtual void validate()=0;
  61. virtual void validateRect(RECT *r)=0;
  62. virtual void validateRgn(api_region *reg)=0;
  63. virtual void onChildInvalidate(api_region *r, ifc_window *who)=0;
  64. virtual int rootwnd_paintTree(ifc_canvas *canvas, api_region *r)=0;
  65. virtual int paint (Canvas *canvas, api_region *r)=0;
  66. virtual Canvas *getFrameBuffer()=0;
  67. virtual ifc_window *getParent()=0;
  68. virtual ifc_window *getRootParent()=0;
  69. virtual ifc_window *getDesktopParent()=0;
  70. virtual void setParent(ifc_window *parent)=0;
  71. virtual int onSiblingInvalidateRgn(api_region *r, ifc_window *who, int who_idx, int my_idx)=0;
  72. virtual int wantSiblingInvalidations()=0;
  73. virtual int cascadeRepaintFrom(ifc_window *who, int pack=1)=0;
  74. virtual int cascadeRepaintRgnFrom(api_region *reg, ifc_window *who, int pack=1)=0;
  75. virtual int cascadeRepaintRectFrom(RECT *r, ifc_window *who, int pack=1)=0;
  76. virtual int cascadeRepaint(int pack=1)=0;
  77. virtual int cascadeRepaintRgn(api_region *reg, int pack=1)=0;
  78. virtual int cascadeRepaintRect(RECT *r, int pack=1)=0;
  79. virtual void repaint()=0;
  80. virtual void setClickThrough(int ct)=0;
  81. virtual ifc_window *getBaseTextureWindow()=0;
  82. virtual void rootwnd_renderBaseTexture(ifc_canvas *c, const RECT *r, int alpha=255)=0;
  83. #if defined (_WIN64)
  84. virtual int childNotify(ifc_window* child, int msg, int p1, int p2) = 0;
  85. #else
  86. virtual int childNotify(ifc_window *child, int msg, intptr_t p1, intptr_t p2)=0;
  87. #endif
  88. virtual int getPreferences(int what)=0;
  89. virtual void setPreferences(int what, int v)=0;
  90. virtual api_region *getRegion()=0;
  91. virtual int getRegionOp()=0;
  92. virtual void setRegionOp(int op)=0;
  93. virtual int isRectRgn()=0;
  94. virtual void setRectRgn(int rrgn)=0;
  95. virtual void invalidateWindowRegion()=0;
  96. virtual api_region *getComposedRegion()=0;
  97. virtual api_region *getSubtractorRegion()=0;
  98. virtual void setStartHidden(int sh)=0;
  99. virtual double getRenderRatio()=0;
  100. virtual void setRenderRatio(double r)=0;
  101. virtual void setRatioLinked(int l)=0;
  102. virtual int handleRatio()=0;
  103. virtual void resize(int x, int y, int w, int h, int wantcb=1)=0;
  104. virtual void move(int x, int y)=0;
  105. virtual void notifyDeferredMove(int x, int y)=0;
  106. virtual void getPosition(POINT *pt)=0;
  107. virtual ifc_window *getForwardWnd()=0;
  108. virtual void registerRootWndChild(ifc_window *child)=0;
  109. virtual void unregisterRootWndChild(ifc_window *child)=0;
  110. virtual ifc_window *findRootWndChild(int x, int y, int only_virtuals=0)=0;
  111. virtual ifc_window *enumRootWndChildren(int _enum)=0;
  112. virtual int getNumRootWndChildren()=0;
  113. virtual int isVirtual()=0;
  114. virtual void bringVirtualToFront(ifc_window *w)=0;
  115. virtual void bringVirtualToBack(ifc_window *w)=0;
  116. virtual void bringVirtualAbove(ifc_window *w, ifc_window *b)=0;
  117. virtual void bringVirtualBelow(ifc_window *w, ifc_window *b)=0;
  118. virtual int checkDoubleClick(int button, int x, int y)=0;
  119. virtual void onCancelCapture()=0;
  120. virtual void cancelCapture()=0;
  121. virtual void clientToScreen(int *x, int *y)=0;
  122. virtual void screenToClient(int *x, int *y)=0;
  123. virtual void setVirtualChildCapture(ifc_window *child)=0;
  124. virtual ifc_window *getVirtualChildCapture()=0;
  125. virtual int ptInRegion(int x, int y)=0;
  126. virtual int onActivate()=0;
  127. virtual void activate()=0;
  128. virtual int onDeactivate()=0;
  129. virtual int isActive()=0;
  130. virtual int handleTransparency()=0;
  131. virtual int handleDesktopAlpha()=0;
  132. virtual int getNotifyId()=0;
  133. virtual void setEnabled(int en)=0;
  134. virtual int isEnabled(int within=0)=0;
  135. virtual int onEnable(int e)=0;
  136. virtual int getPaintingAlpha()=0;
  137. virtual void getAlpha(int *active=NULL, int *inactive=NULL)=0;
  138. virtual void setAlpha(int activealpha, int inactivealpha=-1)=0;
  139. virtual void setTip(const wchar_t *tip)=0;
  140. virtual int runModal()=0;
  141. virtual void endModal(int retcode)=0;
  142. virtual int wantAutoContextMenu()=0;
  143. virtual int wantActivation()=0;
  144. virtual void bringToFront()=0;
  145. virtual void bringToBack()=0;
  146. virtual void setFocus()=0;
  147. virtual int gotFocus()=0;
  148. virtual ifc_window *getNextVirtualFocus(ifc_window *w)=0;
  149. virtual void setVirtualChildFocus(ifc_window *w)=0;
  150. virtual void setVirtualTabOrder(ifc_window *w, int a)=0;
  151. virtual int getVirtualTabOrder(ifc_window *w)=0;
  152. virtual int wantFocus()=0;
  153. virtual void setTabOrder(int a)=0;
  154. virtual int getTabOrder()=0;
  155. virtual ifc_window *getTab(int what=TAB_GETCURRENT)=0;
  156. virtual void setAutoTabOrder()=0;
  157. virtual void setVirtualAutoTabOrder(ifc_window *w)=0;
  158. virtual ifc_window *getCurVirtualChildFocus()=0;
  159. virtual void onSetRootFocus(ifc_window *w)=0;
  160. virtual int onAcceleratorEvent(const wchar_t *name)=0;
  161. virtual int onChar(unsigned int c)=0;
  162. virtual int onKeyDown(int keycode)=0;
  163. virtual int onKeyUp(int keycode)=0;
  164. virtual int onSysKeyDown(int keyCode, int keyData)=0;
  165. virtual int onSysKeyUp(int keyCode, int keyData)=0;
  166. virtual int onKillFocus()=0;
  167. virtual int onGetFocus()=0;
  168. virtual ifc_dependent *rootwnd_getDependencyPtr()=0;
  169. virtual void addMinMaxEnforcer(ifc_window *w)=0;
  170. virtual void removeMinMaxEnforcer(ifc_window *w)=0;
  171. virtual ifc_window *enumMinMaxEnforcer(int n)=0;
  172. virtual int getNumMinMaxEnforcers()=0;
  173. virtual void signalMinMaxEnforcerChanged()=0;
  174. 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;
  175. virtual void setRenderBaseTexture(int r)=0;
  176. virtual int getRenderBaseTexture()=0;
  177. virtual GuiObject *getGuiObject()=0; // not guaranteed non null
  178. virtual int getFlag(int flag)=0;
  179. virtual int triggerEvent(int event, intptr_t p1, intptr_t p2)=0;
  180. virtual int allowDeactivation()=0;
  181. virtual void setAllowDeactivation(int allow)=0;
  182. virtual ifc_window *findWindow(const wchar_t *id)=0;
  183. virtual ifc_window *findWindowByInterface(GUID interface_guid)=0;
  184. virtual ifc_window *findWindowByCallback(FindObjectCallback *cb)=0;
  185. virtual ifc_window *findWindowChain(FindObjectCallback *cb, ifc_window *wcaller)=0;
  186. virtual void focusNext()=0;
  187. virtual void focusPrevious()=0;
  188. virtual void setWindowTitle(const wchar_t *title) = 0;
  189. virtual ifc_window *enumTab(int i)=0;
  190. virtual int getNumTabs()=0;
  191. virtual int getFocusOnClick()=0;
  192. virtual void setFocusOnClick(int i)=0;
  193. virtual void setNoDoubleClicks(int no)=0;
  194. virtual void setNoLeftClicks(int no)=0;
  195. virtual void setNoRightClicks(int no)=0;
  196. virtual void setNoMouseMoves(int no)=0;
  197. virtual void setNoContextMenus(int no)=0;
  198. virtual int wantDoubleClicks()=0;
  199. virtual int wantLeftClicks()=0;
  200. virtual int wantRightClicks()=0;
  201. virtual int wantMouseMoves()=0;
  202. virtual int wantContextMenus()=0;
  203. virtual void setDefaultCursor(Cursor *c)=0;
  204. virtual Accessible *getAccessibleObject(int createifnotexist=1)=0;
  205. virtual int accessibility_getState()=0;
  206. #ifdef EXPERIMENTAL_INDEPENDENT_AOT
  207. virtual void setAlwaysOnTop(int i)=0;
  208. virtual int getAlwaysOnTop()=0;
  209. #endif
  210. #ifndef WA3COMPATIBILITY
  211. virtual void setDropTarget(void *dt)=0;
  212. virtual void *getDropTarget()=0;
  213. #endif
  214. virtual int isMinimized()=0;
  215. virtual void maximize(int axis=MAXIMIZE_WIDTH|MAXIMIZE_HEIGHT)=0;
  216. virtual void restore(int what=RESTORE_X|RESTORE_Y|RESTORE_WIDTH|RESTORE_HEIGHT)=0;
  217. virtual int getRestoredRect(RECT *r)=0;
  218. protected:
  219. RECVS_DISPATCH;
  220. };
  221. #endif