GameWindow.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487
  1. /*
  2. ** Command & Conquer Generals(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. ////////////////////////////////////////////////////////////////////////////////
  19. // //
  20. // (c) 2001-2003 Electronic Arts Inc. //
  21. // //
  22. ////////////////////////////////////////////////////////////////////////////////
  23. // FILE: GameWindow.h /////////////////////////////////////////////////////////
  24. //-----------------------------------------------------------------------------
  25. //
  26. // Westwood Studios Pacific.
  27. //
  28. // Confidential Information
  29. // Copyright (C) 2001 - All Rights Reserved
  30. //
  31. //-----------------------------------------------------------------------------
  32. //
  33. // Project: RTS3
  34. //
  35. // File name: GameWindow.h
  36. //
  37. // Created: Colin Day, June 2001
  38. //
  39. // Desc: Header for game windowing system for generic windows and GUI
  40. // elements
  41. //
  42. //-----------------------------------------------------------------------------
  43. ///////////////////////////////////////////////////////////////////////////////
  44. #pragma once
  45. #ifndef __GAMEWINDOW_H_
  46. #define __GAMEWINDOW_H_
  47. // SYSTEM INCLUDES ////////////////////////////////////////////////////////////
  48. // USER INCLUDES //////////////////////////////////////////////////////////////
  49. #include "Lib/BaseType.h"
  50. #include "Common/GameMemory.h"
  51. #include "GameClient/Image.h"
  52. #include "GameClient/DisplayString.h"
  53. #include "GameClient/WinInstanceData.h"
  54. #include "GameClient/Color.h"
  55. ///////////////////////////////////////////////////////////////////////////////
  56. // FORWARD REFERENCES /////////////////////////////////////////////////////////
  57. ///////////////////////////////////////////////////////////////////////////////
  58. class GameWindow;
  59. class WindowLayout;
  60. class GameFont;
  61. struct GameWindowEditData;
  62. ///////////////////////////////////////////////////////////////////////////////
  63. // TYPE DEFINES ///////////////////////////////////////////////////////////////
  64. ///////////////////////////////////////////////////////////////////////////////
  65. enum { WIN_COLOR_UNDEFINED = GAME_COLOR_UNDEFINED };
  66. // WindowMsgData --------------------------------------------------------------
  67. //-----------------------------------------------------------------------------
  68. typedef UnsignedInt WindowMsgData;
  69. //-----------------------------------------------------------------------------
  70. enum WindowMsgHandledType { MSG_IGNORED, MSG_HANDLED };
  71. // callback types -------------------------------------------------------------
  72. typedef void (*GameWinMsgBoxFunc)( void ); //used for the Message box callbacks.
  73. typedef void (*GameWinDrawFunc)( GameWindow *,
  74. WinInstanceData * );
  75. typedef void (*GameWinTooltipFunc)( GameWindow *,
  76. WinInstanceData *,
  77. UnsignedInt );
  78. typedef WindowMsgHandledType (*GameWinInputFunc)( GameWindow *,
  79. UnsignedInt,
  80. WindowMsgData,
  81. WindowMsgData );
  82. typedef WindowMsgHandledType (*GameWinSystemFunc)( GameWindow *,
  83. UnsignedInt,
  84. WindowMsgData,
  85. WindowMsgData );
  86. enum
  87. {
  88. WIN_MAX_WINDOWS = 576,
  89. CURSOR_MOVE_TOL_SQ = 4,
  90. TOOLTIP_DELAY = 10,
  91. WIN_TOOLTIP_LEN = 64, // max length of tooltip text
  92. };
  93. // macros for easier conversion -----------------------------------------------
  94. #define SHORTTOLONG(a, b) ((UnsignedShort)(a) | ((UnsignedShort)(b) << 16))
  95. #define LOLONGTOSHORT(a) ((a) & 0x0000FFFF)
  96. #define HILONGTOSHORT(b) (((b) & 0xFFFF0000) >> 16)
  97. // Game window messages -------------------------------------------------------
  98. //-----------------------------------------------------------------------------
  99. enum GameWindowMessage
  100. {
  101. GWM_NONE = 0,
  102. GWM_CREATE, GWM_DESTROY,
  103. GWM_ACTIVATE, GWM_ENABLE,
  104. GWM_LEFT_DOWN, GWM_LEFT_UP,
  105. GWM_LEFT_DOUBLE_CLICK, GWM_LEFT_DRAG,
  106. GWM_MIDDLE_DOWN, GWM_MIDDLE_UP,
  107. GWM_MIDDLE_DOUBLE_CLICK, GWM_MIDDLE_DRAG,
  108. GWM_RIGHT_DOWN, GWM_RIGHT_UP,
  109. GWM_RIGHT_DOUBLE_CLICK, GWM_RIGHT_DRAG,
  110. GWM_MOUSE_ENTERING, GWM_MOUSE_LEAVING,
  111. GWM_WHEEL_UP, GWM_WHEEL_DOWN,
  112. GWM_CHAR, GWM_SCRIPT_CREATE,
  113. // note that GWM_MOUSE_POS is only actually propogated to windows if the static
  114. // sendMousePosMessages is set to true in the window manager file. See the
  115. // comment on the static declaration for addtional info
  116. GWM_INPUT_FOCUS, GWM_MOUSE_POS,
  117. GWM_IME_CHAR, GWM_IME_STRING
  118. };
  119. // WinInputReturnCode ------------------------------------------------------
  120. /** These return codes are returned when after processing events through
  121. * the window system */
  122. //-----------------------------------------------------------------------------
  123. enum WinInputReturnCode
  124. {
  125. WIN_INPUT_NOT_USED = 0,
  126. WIN_INPUT_USED,
  127. };
  128. #define GWM_USER 32768
  129. // Window status flags --------------------------------------------------------
  130. //-----------------------------------------------------------------------------
  131. enum
  132. {
  133. // when you edit this, remember to edit WindowStatusNames[]
  134. WIN_STATUS_NONE = 0x00000000, // No status bits set at all
  135. WIN_STATUS_ACTIVE = 0x00000001, // At the top of the window list
  136. WIN_STATUS_TOGGLE = 0x00000002, // If set, click to toggle
  137. WIN_STATUS_DRAGABLE = 0x00000004, // Window can be dragged
  138. WIN_STATUS_ENABLED = 0x00000008, // Window can receive input
  139. WIN_STATUS_HIDDEN = 0x00000010, // Window is hidden, no input
  140. WIN_STATUS_ABOVE = 0x00000020, // Window is always above others
  141. WIN_STATUS_BELOW = 0x00000040, // Window is always below others
  142. WIN_STATUS_IMAGE = 0x00000080, // Window is drawn with images
  143. WIN_STATUS_TAB_STOP = 0x00000100, // Window is a tab stop
  144. WIN_STATUS_NO_INPUT = 0x00000200, // Window does not take input
  145. WIN_STATUS_NO_FOCUS = 0x00000400, // Window does not take focus
  146. WIN_STATUS_DESTROYED = 0x00000800, // Window has been destroyed
  147. WIN_STATUS_BORDER = 0x00001000, // Window will be drawn with Borders & Corners
  148. WIN_STATUS_SMOOTH_TEXT = 0x00002000, // Window text will be drawn with smoothing
  149. WIN_STATUS_ONE_LINE = 0x00004000, // Window text will be drawn on only one line
  150. WIN_STATUS_NO_FLUSH = 0x00008000, // Window images will not be unloaded when window is hidden
  151. WIN_STATUS_SEE_THRU = 0x00010000, // Will not draw, but it NOT hidden ... does not apply to children
  152. WIN_STATUS_RIGHT_CLICK = 0x00020000, // Window pays attention to right clicks
  153. WIN_STATUS_WRAP_CENTERED = 0x00040000, // Text will be centered on each word wrap or \n
  154. WIN_STATUS_CHECK_LIKE = 0x00080000, // Make push buttons "check-like" with dual state
  155. WIN_STATUS_HOTKEY_TEXT = 0x00100000, // Make push buttons "check-like" with dual state
  156. WIN_STATUS_USE_OVERLAY_STATES = 0x00200000, // Push buttons will use the global automatic rendering overlay for disabled, hilited, and pushed.
  157. WIN_STATUS_NOT_READY = 0x00400000, // A disabled button that is available -- but not yet (power charge, fire delay).
  158. WIN_STATUS_FLASHING = 0x00800000, // Used for buttons that do cameo flashes.
  159. WIN_STATUS_ALWAYS_COLOR = 0x01000000, // Never render these buttons using greyscale renderer when button disabled.
  160. // when you edit this, remember to edit WindowStatusNames[]
  161. };
  162. // Message Box Button flags --------------------------------------------------------
  163. //-----------------------------------------------------------------------------
  164. enum
  165. {
  166. MSG_BOX_YES = 0x01, //Display the yes button
  167. MSG_BOX_NO = 0x02, //Display the No button
  168. MSG_BOX_OK = 0x08, //Display the Ok button
  169. MSG_BOX_CANCEL = 0x04, //Display the Cancel button
  170. };
  171. // WindowMessageBoxData ---------------------------------------------------------
  172. /** Data attached to each Message box window */
  173. //-----------------------------------------------------------------------------
  174. struct WindowMessageBoxData
  175. {
  176. GameWinMsgBoxFunc yesCallback; ///<Function pointer to the Yes Button Callback
  177. GameWinMsgBoxFunc noCallback;///<Function pointer to the No Button Callback
  178. GameWinMsgBoxFunc okCallback;///<Function pointer to the Ok Button Callback
  179. GameWinMsgBoxFunc cancelCallback;///<Function pointer to the Cancel Button Callback
  180. };
  181. // GameWindowEditData ---------------------------------------------------------
  182. /** Data attached to each window specifically for the editor */
  183. //-----------------------------------------------------------------------------
  184. struct GameWindowEditData
  185. {
  186. AsciiString systemCallbackString; ///< string for callback
  187. AsciiString inputCallbackString; ///< string for callback
  188. AsciiString tooltipCallbackString; ///< string for callback
  189. AsciiString drawCallbackString; ///< string for callback
  190. };
  191. // GameWindow -----------------------------------------------------------------
  192. /** Class definition for a game window. These are the basic elements of the
  193. * whole windowing sytem, all windows are GameWindows, as are all GUI controls
  194. * etc. */
  195. //-----------------------------------------------------------------------------
  196. class GameWindow : public MemoryPoolObject
  197. {
  198. MEMORY_POOL_GLUE_ABC( GameWindow ) ///< this abstract class needs memory pool hooks
  199. friend class GameWindowManager;
  200. public:
  201. GameWindow( void );
  202. // already defined by MPO.
  203. // virtual ~GameWindow( void );
  204. /// draw border for this window only, NO child windows or anything
  205. virtual void winDrawBorder( void ) = 0;
  206. Int winSetWindowId( Int id ); ///< set id for this window
  207. Int winGetWindowId( void ); ///< return window id for this window
  208. Int winSetSize( Int width, Int height ); ///< set size
  209. Int winGetSize( Int *width, Int *height ); ///< return size
  210. Int winActivate( void ); ///< pop window to top of list and activate
  211. Int winBringToTop( void ); ///< bring this window to the top of the win list
  212. Int winEnable( Bool enable ); /**< enable/disable a window, a disbled
  213. window can be seen but accepts no input */
  214. Int winHide( Bool hide ); ///< hide/unhide a window
  215. Bool winIsHidden( void ); ///< is this window hidden/
  216. UnsignedInt winSetStatus( UnsignedInt status ); ///< set status bits
  217. UnsignedInt winClearStatus( UnsignedInt status ); ///< clear status bits
  218. UnsignedInt winGetStatus( void ); ///< get status bits
  219. UnsignedInt winGetStyle( void ); ///< get style bits
  220. Int winNextTab( void ); ///< advance focus to next window
  221. Int winPrevTab( void ); ///< change focus to previous window
  222. Int winSetPosition( Int x, Int y ); ///< set window position
  223. Int winGetPosition( Int *x, Int *y ); ///< get window position
  224. Int winGetScreenPosition( Int *x, Int *y ); ///< get screen coordinates
  225. Int winGetRegion( IRegion2D *region ); ///< get window region
  226. Int winSetCursorPosition( Int x, Int y ); ///< set window cursor position
  227. Int winGetCursorPosition( Int *x, Int *y ); ///< get window cursor position
  228. // --------------------------------------------------------------------------
  229. // new methods for setting images
  230. Int winSetEnabledImage( Int index, const Image *image );
  231. Int winSetEnabledColor( Int index, Color color );
  232. Int winSetEnabledBorderColor( Int index, Color color );
  233. const Image *winGetEnabledImage( Int index ) { return m_instData.m_enabledDrawData[ index ].image; }
  234. Color winGetEnabledColor( Int index ) { return m_instData.m_enabledDrawData[ index ].color; }
  235. Color winGetEnabledBorderColor( Int index ) { return m_instData.m_enabledDrawData[ index ].borderColor; }
  236. Int winSetDisabledImage( Int index, const Image *image );
  237. Int winSetDisabledColor( Int index, Color color );
  238. Int winSetDisabledBorderColor( Int index, Color color );
  239. const Image *winGetDisabledImage( Int index ) { return m_instData.m_disabledDrawData[ index ].image; }
  240. Color winGetDisabledColor( Int index ) { return m_instData.m_disabledDrawData[ index ].color; }
  241. Color winGetDisabledBorderColor( Int index ) { return m_instData.m_disabledDrawData[ index ].borderColor; }
  242. Int winSetHiliteImage( Int index, const Image *image );
  243. Int winSetHiliteColor( Int index, Color color );
  244. Int winSetHiliteBorderColor( Int index, Color color );
  245. const Image *winGetHiliteImage( Int index ) { return m_instData.m_hiliteDrawData[ index ].image; }
  246. Color winGetHiliteColor( Int index ) { return m_instData.m_hiliteDrawData[ index ].color; }
  247. Color winGetHiliteBorderColor( Int index ) { return m_instData.m_hiliteDrawData[ index ].borderColor; }
  248. // --------------------------------------------------------------------------
  249. // draw methods and data
  250. Int winDrawWindow( void ); ///< draws the default background
  251. void winSetDrawOffset( Int x, Int y ); ///< set offset for drawing background image data
  252. void winGetDrawOffset( Int *x, Int *y ); ///< get draw offset
  253. void winSetHiliteState( Bool state ); ///< set hilite state
  254. void winSetTooltip( UnicodeString tip ); ///< set tooltip text
  255. Int getTooltipDelay() { return m_instData.m_tooltipDelay; } ///< get tooltip delay
  256. void setTooltipDelay(Int delay) { m_instData.m_tooltipDelay = delay; } ///< set tooltip delay
  257. //-----------------------------------------------------------------------------
  258. // text methods
  259. virtual Int winSetText( UnicodeString newText ); ///< set text string
  260. UnicodeString winGetText( void ); ///< get text string
  261. Int winGetTextLength(); ///< get number of chars in text string
  262. GameFont *winGetFont( void ); ///< get the font being used by this window
  263. virtual void winSetFont( GameFont *font ); ///< set font for window
  264. void winSetEnabledTextColors( Color color, Color borderColor );
  265. void winSetDisabledTextColors( Color color, Color borderColor );
  266. void winSetIMECompositeTextColors( Color color, Color borderColor );
  267. void winSetHiliteTextColors( Color color, Color borderColor );
  268. Color winGetEnabledTextColor( void );
  269. Color winGetEnabledTextBorderColor( void );
  270. Color winGetDisabledTextColor( void );
  271. Color winGetDisabledTextBorderColor( void );
  272. Color winGetIMECompositeTextColor( void );
  273. Color winGetIMECompositeBorderColor( void );
  274. Color winGetHiliteTextColor( void );
  275. Color winGetHiliteTextBorderColor( void );
  276. // window instance data
  277. Int winSetInstanceData( WinInstanceData *data ); ///< copy over instance data
  278. WinInstanceData *winGetInstanceData( void ); ///< get instance data
  279. void *winGetUserData( void ); ///< get the window user data
  280. void winSetUserData( void *userData ); ///< set the user data
  281. // heirarchy methods
  282. Int winSetParent( GameWindow *parent ); ///< set parent
  283. GameWindow *winGetParent( void ); ///< get parent
  284. Bool winIsChild( GameWindow *child ); ///< verifies parent
  285. GameWindow *winGetChild( void ); ///< get the child window
  286. Int winSetOwner( GameWindow *owner ); ///< set owner
  287. GameWindow *winGetOwner( void ); ///< get window's owner
  288. void winSetNext( GameWindow *next ); ///< set next pointer
  289. void winSetPrev( GameWindow *prev ); ///< set prev pointer
  290. GameWindow *winGetNext( void ); ///< get next window in window list
  291. GameWindow *winGetPrev( void ); ///< get previous window in window list
  292. // these are for interacting with a group of windows as a shell "screen"
  293. void winSetNextInLayout( GameWindow *next ); ///< set next in layout
  294. void winSetPrevInLayout( GameWindow *prev ); ///< set prev in layout
  295. void winSetLayout( WindowLayout *layout ); ///< set layout
  296. WindowLayout *winGetLayout( void ); ///< get layout layout
  297. GameWindow *winGetNextInLayout( void ); ///< get next window in layout
  298. GameWindow *winGetPrevInLayout( void ); ///< get prev window in layout
  299. // setting the callbacks ----------------------------------------------------
  300. Int winSetSystemFunc( GameWinSystemFunc system ); ///< set system
  301. Int winSetInputFunc( GameWinInputFunc input ); ///< set input
  302. Int winSetDrawFunc( GameWinDrawFunc draw ); ///< set draw
  303. Int winSetTooltipFunc( GameWinTooltipFunc tooltip ); ///< set tooltip
  304. Int winSetCallbacks( GameWinInputFunc input,
  305. GameWinDrawFunc draw,
  306. GameWinTooltipFunc tooltip ); ///< set draw, input, tooltip
  307. // pick correlation ---------------------------------------------------------
  308. Bool winPointInWindow( Int x, Int y ); /**is point inside this window?
  309. also return TRUE if point is in
  310. a child */
  311. /** given a piont, return the child window which contains the mouse pointer,
  312. if the point is not in a chilc, the function returns the 'window' paramater
  313. back to the caller */
  314. GameWindow *winPointInChild( Int x, Int y, Bool ignoreEnableCheck = FALSE, Bool playDisabledSound = FALSE );
  315. /** finds the child which contains the mouse pointer - reguardless of
  316. the enabled status of the child */
  317. GameWindow *winPointInAnyChild( Int x, Int y, Bool ignoreHidden, Bool ignoreEnableCheck = FALSE );
  318. // get the callbacks for a window -------------------------------------------
  319. GameWinInputFunc winGetInputFunc( void );
  320. GameWinSystemFunc winGetSystemFunc( void );
  321. GameWinDrawFunc winGetDrawFunc( void );
  322. GameWinTooltipFunc winGetTooltipFunc( void );
  323. // editor access only -------------------------------------------------------
  324. void winSetEditData( GameWindowEditData *editData );
  325. GameWindowEditData *winGetEditData( void );
  326. protected:
  327. /// 'images' should be taken care of when we hide ourselves or are destroyed
  328. void freeImages( void ) { }
  329. Bool isEnabled( void ); ///< see if we and our parents are enabled
  330. void normalizeWindowRegion( void ); ///< put UL corner in window region.lo
  331. GameWindow *findFirstLeaf( void ); ///< return first leaf of branch
  332. GameWindow *findLastLeaf( void ); ///< return last leaf of branch
  333. GameWindow *findPrevLeaf( void ); ///< return prev leav in tree
  334. GameWindow *findNextLeaf( void ); ///< return next leaf in tree
  335. // **************************************************************************
  336. Int m_status; // Status bits for this window
  337. ICoord2D m_size; // Width and height of the window
  338. IRegion2D m_region; // Current region occupied by window.
  339. // Low x,y is the window's origin
  340. Int m_cursorX; // window cursor X position if any
  341. Int m_cursorY; // window cursor Y position if any
  342. void *m_userData; // User defined data area
  343. WinInstanceData m_instData; // Class data, varies by window type
  344. void *m_inputData; // Client data
  345. // user defined callbacks
  346. GameWinInputFunc m_input; ///< callback for input
  347. GameWinSystemFunc m_system; ///< callback for system messages
  348. GameWinDrawFunc m_draw; ///< callback for drawing
  349. GameWinTooltipFunc m_tooltip; ///< callback for tooltip execution
  350. GameWindow *m_next, *m_prev; // List of sibling windows
  351. GameWindow *m_parent; // Window which contains this window
  352. GameWindow *m_child; // List of windows within this window
  353. //
  354. // the following are for "layout screens" and ONLY apply to root/parent
  355. // windows in a layout, any children of a window that is part of a layout
  356. // does NOT have layout screen information
  357. //
  358. GameWindow *m_nextLayout; ///< next in layout
  359. GameWindow *m_prevLayout; ///< prev in layout
  360. WindowLayout *m_layout; ///< layout this window is a part of
  361. // game window edit data for the GUIEditor only
  362. GameWindowEditData *m_editData;
  363. }; // end class GameWindow
  364. // ModalWindow ----------------------------------------------------------------
  365. //-----------------------------------------------------------------------------
  366. class ModalWindow : public MemoryPoolObject
  367. {
  368. MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE( ModalWindow, "ModalWindow" )
  369. public:
  370. GameWindow *window; // Pointer to Modal Window
  371. ModalWindow *next; // Next Window Pointer
  372. };
  373. EMPTY_DTOR(ModalWindow)
  374. // Errors returned by window functions
  375. enum
  376. {
  377. WIN_ERR_OK = 0, // No Error
  378. WIN_ERR_GENERAL_FAILURE = -1, // General library failure
  379. WIN_ERR_INVALID_WINDOW = -2, // Window parameter was invalid
  380. WIN_ERR_INVALID_PARAMETER = -3, // Parameter was invalid
  381. WIN_ERR_MOUSE_CAPTURED = -4, // Mouse already captured
  382. WIN_ERR_KEYBOARD_CAPTURED = -5, // Keyboard already captured
  383. WIN_ERR_OUT_OF_WINDOWS = -6 // Too many windows have been created
  384. };
  385. // Input capture/release flags
  386. enum
  387. {
  388. WIN_CAPTURE_MOUSE = 0x00000001, // capture mouse
  389. WIN_CAPTURE_KEYBOARD = 0x00000002, // capture keyboard
  390. WIN_CAPTURE_ALL = 0xFFFFFFFF, // capture keyboard and mouse
  391. };
  392. // INLINING ///////////////////////////////////////////////////////////////////
  393. // EXTERNALS //////////////////////////////////////////////////////////////////
  394. extern void GameWinDefaultDraw( GameWindow *window,
  395. WinInstanceData *instData );
  396. extern WindowMsgHandledType GameWinDefaultSystem( GameWindow *window,
  397. UnsignedInt msg,
  398. WindowMsgData mData1,
  399. WindowMsgData mData2 );
  400. extern WindowMsgHandledType GameWinDefaultInput( GameWindow *window,
  401. UnsignedInt msg,
  402. WindowMsgData mData1,
  403. WindowMsgData mData2 );
  404. extern WindowMsgHandledType GameWinBlockInput( GameWindow *window,
  405. UnsignedInt msg,
  406. WindowMsgData mData1,
  407. WindowMsgData mData2 );
  408. extern void GameWinDefaultTooltip( GameWindow *window,
  409. WinInstanceData *instData,
  410. UnsignedInt mouse );
  411. extern const char *WindowStatusNames[];
  412. extern const char *WindowStyleNames[];
  413. #endif // __GAMEWINDOW_H_