home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / defs.h < prev    next >
C/C++ Source or Header  |  2003-01-03  |  73KB  |  2,159 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        defs.h
  3. // Purpose:     Declarations/definitions common to all wx source files
  4. // Author:      Julian Smart and others
  5. // Modified by:
  6. // Created:     01/02/97
  7. // RCS-ID:      $Id: defs.h,v 1.320.2.6 2002/12/29 01:35:28 VZ Exp $
  8. // Copyright:   (c)
  9. // Licence:     wxWindows licence
  10. /////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifndef _WX_DEFS_H_
  13. #define _WX_DEFS_H_
  14.  
  15. #if defined(__GNUG__) && !defined(__APPLE__)
  16. #pragma interface "defs.h"
  17. #endif
  18.  
  19. // ----------------------------------------------------------------------------
  20. // compiler and OS identification
  21. // ----------------------------------------------------------------------------
  22.  
  23. #include "wx/platform.h"
  24.  
  25. // Make sure the environment is set correctly
  26. #if defined(__WXMSW__) && defined(__X__)
  27. #error "Target can't be both X and Windows"
  28. #elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \
  29.       !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \
  30.       !defined(__WXMGL__) && !defined(__WXX11__) && wxUSE_GUI
  31. #ifdef __UNIX__
  32. #error "No Target! You should use wx-config program for compilation flags!"
  33. #else // !Unix
  34. #error "No Target! You should use supplied makefiles for compilation!"
  35. #endif // Unix/!Unix
  36. #endif
  37.  
  38. // include the feature test macros
  39. #include "wx/features.h"
  40.  
  41. // suppress some Visual C++ warnings
  42. #ifdef __VISUALC__
  43. #   pragma warning(disable:4201)    // nonstandard extension used: nameless struct/union
  44. #   pragma warning(disable:4244)    // conversion from double to float
  45. #   pragma warning(disable:4100)    // unreferenced formal parameter
  46. #   pragma warning(disable:4511)    // copy ctor couldn't be generated
  47. #   pragma warning(disable:4512)    // operator=() couldn't be generated
  48. #   pragma warning(disable:4699)    // using precompiled header
  49. #   pragma warning(disable:4134)    // conversion between pointers to members of same class
  50. #   pragma warning(disable:4710)    // function not inlined
  51. #ifndef WIN32
  52. #   pragma warning(disable:4135)    // conversion between different integral types
  53. #   pragma warning(disable:4769)    // assignment of near pointer to long integer
  54. // This one is really annoying, since it occurs for each cast to (HANDLE)...
  55. #   pragma warning(disable:4305)    // truncation of long to near ptr
  56. #endif
  57. #endif // __VISUALC__
  58.  
  59. // suppress some Watcom C++ warnings
  60. #ifdef __WATCOMC__
  61. #   pragma warning 849 9            // Disable 'virtual function hidden'
  62. #   pragma warning 549 9            // Disable 'operand contains compiler generated information'
  63. #endif // __VISUALC__
  64.  
  65. // suppress some Salford C++ warnings
  66. #ifdef __SALFORDC__
  67. #   pragma suppress 353             // Possible nested comments
  68. #   pragma suppress 593             // Define not used
  69. #   pragma suppress 61              // enum has no name (doesn't suppress!)
  70. #   pragma suppress 106             // unnamed, unused parameter
  71. #   pragma suppress 571             // Virtual function hiding
  72. #endif // __SALFORDC__
  73.  
  74. // ----------------------------------------------------------------------------
  75. // wxWindows version and compatibility defines
  76. // ----------------------------------------------------------------------------
  77.  
  78. #include "wx/version.h"
  79.  
  80. // possibility to build non GUI apps is new, so don't burden ourselves with
  81. // compatibility code
  82. #if !wxUSE_GUI
  83. #undef WXWIN_COMPATIBILITY_2
  84. #undef WXWIN_COMPATIBILITY_2_2
  85.  
  86. #define WXWIN_COMPATIBILITY_2 0
  87. #define WXWIN_COMPATIBILITY_2_2 0
  88. #endif // !GUI
  89.  
  90. // ============================================================================
  91. // non portable C++ features
  92. // ============================================================================
  93.  
  94. // ----------------------------------------------------------------------------
  95. // compiler defects workarounds
  96. // ----------------------------------------------------------------------------
  97.  
  98. #if defined(__VISUALC__) && !defined(WIN32)
  99.     // VC1.5 does not have LPTSTR type
  100. #define LPTSTR  LPSTR
  101. #define LPCTSTR LPCSTR
  102. #elif defined(__BORLANDC__) && !defined(__WIN32__)
  103. #ifndef LPTSTR
  104. #define LPTSTR  LPSTR
  105. #endif
  106. #ifndef LPCTSTR
  107. #define LPCTSTR LPSTR
  108. #endif
  109. #endif
  110.  
  111.  
  112. /*
  113.    Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
  114.    so define it ourselves (newer versions do it for all files, though, and
  115.    don't allow it to be redefined)
  116.  */
  117. #if defined(__DECCXX) && !defined(__VMS) && !defined(__cplusplus)
  118. #define __cplusplus
  119. #endif /* __DECCXX */
  120.  
  121. // Resolves linking problems under HP-UX when compiling with gcc/g++
  122. #if defined(__HPUX__) && defined(__GNUG__)
  123. #define va_list __gnuc_va_list
  124. #endif // HP-UX
  125.  
  126. // ----------------------------------------------------------------------------
  127. // check for native bool type and TRUE/FALSE constants
  128. // ----------------------------------------------------------------------------
  129.  
  130. // Add more tests here for Windows compilers that already define bool
  131. // (under Unix, configure tests for this)
  132. #ifndef HAVE_BOOL
  133.     #if defined( __MWERKS__ )
  134.         #if (__MWERKS__ >= 0x1000) && __option(bool)
  135.             #define HAVE_BOOL
  136.         #endif
  137.     #elif defined(__APPLE__) && defined(__APPLE_CC__)
  138.         // Apple bundled gcc supports bool
  139.         #define HAVE_BOOL
  140.     #elif defined(__VISUALC__) && (__VISUALC__ == 1020)
  141.         // in VC++ 4.2 the bool keyword is reserved (hence can't be typedefed)
  142.         // but not implemented, so we must #define it
  143.         #define bool unsigned int
  144.     #elif defined(__VISUALC__) && (__VISUALC__ == 1010)
  145.         // For VisualC++ 4.1, we need to define
  146.         // bool as something between 4.0 & 5.0...
  147.         typedef unsigned int wxbool;
  148.         #define bool wxbool
  149.         #define HAVE_BOOL
  150.     #elif defined(__VISUALC__) && (__VISUALC__ > 1020)
  151.         // VC++ supports bool since 4.2
  152.         #define HAVE_BOOL
  153.     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x500)
  154.         // Borland 5.0+ supports bool
  155.         #define HAVE_BOOL
  156.     #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
  157.         // Watcom 11+ supports bool
  158.         #define HAVE_BOOL
  159.     #elif defined(__GNUWIN32__)
  160.         // Cygwin supports bool
  161.         #define HAVE_BOOL
  162.     #elif defined(__VISAGECPP__)
  163.         #if __IBMCPP__ < 400
  164.             typedef unsigned long bool;
  165.         #endif
  166.         #define HAVE_BOOL
  167.     #endif // compilers
  168. #endif // HAVE_BOOL
  169.  
  170. #if !defined(HAVE_BOOL) && !defined(bool) && !defined(VMS)
  171.     // NB: of course, this doesn't replace the standard type, because, for
  172.     //     example, overloading based on bool/int parameter doesn't work and
  173.     //     so should be avoided in portable programs
  174.     typedef unsigned int bool;
  175. #endif // bool
  176.  
  177. #ifdef __cplusplus
  178.     // define boolean constants: don't use true/false here as not all compilers
  179.     // support them but also redefine TRUE which could have been defined as 1
  180.     // by previous headers: this would be incorrect as our TRUE is supposed to
  181.     // be of type bool, just like true, not int
  182.     //
  183.     // however if the user code absolutely needs TRUE to be defined in its own
  184.     // way, it can predefine WX_TRUE_DEFINED to prevent the redefinition here
  185.     #ifdef TRUE
  186.         #ifndef WX_TRUE_DEFINED
  187.             #undef TRUE
  188.             #undef FALSE
  189.         #endif
  190.     #endif
  191.  
  192.     #ifndef TRUE
  193.         #define TRUE  ((bool)1)
  194.         #define FALSE ((bool)0)
  195.     #endif
  196. #else // !__cplusplus
  197.     // the definitions above don't work for C sources
  198.     #ifndef TRUE
  199.         #define TRUE 1
  200.     #endif
  201.  
  202.     #ifndef FALSE
  203.         #define FALSE 0
  204.     #endif
  205. #endif // C++/!C++
  206.  
  207. typedef short int WXTYPE;
  208.  
  209. // special care should be taken with this type under Windows where the real
  210. // window id is unsigned, so we must always do the cast before comparing them
  211. // (or else they would be always different!). Usign wxGetWindowId() which does
  212. // the cast itself is recommended. Note that this type can't be unsigned
  213. // because wxID_ANY == -1 is a valid (and largely used) value for window id.
  214. typedef int wxWindowID;
  215.  
  216. // ----------------------------------------------------------------------------
  217. // other feature tests
  218. // ----------------------------------------------------------------------------
  219.  
  220. // Every ride down a slippery slope begins with a single step..
  221. //
  222. // Yes, using nested classes is indeed against our coding standards in
  223. // general, but there are places where you can use them to advantage
  224. // without totally breaking ports that cannot use them.  If you do, then
  225. // wrap it in this guard, but such cases should still be relatively rare.
  226. #ifndef __WIN16__
  227.     #define wxUSE_NESTED_CLASSES    1
  228. #else
  229.     #define wxUSE_NESTED_CLASSES    0
  230. #endif
  231.  
  232. // check for explicit keyword support
  233. #ifndef HAVE_EXPLICIT
  234.     #if defined(__VISUALC__) && (__VISUALC__ > 1200)
  235.         // VC++ 6.0 has explicit (what about the earlier versions?)
  236.         #define HAVE_EXPLICIT
  237.     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520)
  238.         // BC++ 4.52 doesn't support explicit, CBuilder 1 does
  239.         #define HAVE_EXPLICIT
  240.     #elif defined(__MWERKS__) && (__MWERKS__ >= 0x2400)
  241.         // Metrowerks CW6 or higher has explicit
  242.         #define HAVE_EXPLICIT
  243.     #endif
  244. #endif // !HAVE_EXPLICIT
  245.  
  246. #ifdef HAVE_EXPLICIT
  247.     #define wxEXPLICIT explicit
  248. #else // !HAVE_EXPLICIT
  249.     #define wxEXPLICIT
  250. #endif // HAVE_EXPLICIT/!HAVE_EXPLICIT
  251.  
  252. // ----------------------------------------------------------------------------
  253. // portable calling conventions macros
  254. // ----------------------------------------------------------------------------
  255.  
  256. // stdcall is used for all functions called by Windows under Windows
  257. #if defined(__WINDOWS__) && !defined(__WXWINE__)
  258.     #if defined(__GNUWIN32__)
  259.         #define wxSTDCALL __attribute__((stdcall))
  260.     #else
  261.         // both VC++ and Borland understand this
  262.         #define wxSTDCALL _stdcall
  263.     #endif
  264.  
  265. #else // Win
  266.     // no such stupidness under Unix
  267.     #define wxSTDCALL
  268. #endif // platform
  269.  
  270. // LINKAGEMODE mode is empty for everyting except OS/2
  271. #ifndef LINKAGEMODE
  272.     #define LINKAGEMODE
  273. #endif // LINKAGEMODE
  274.  
  275. // wxCALLBACK should be used for the functions which are called back by
  276. // Windows (such as compare function for wxListCtrl)
  277. #if defined(__WIN32__) && !defined(__WXMICROWIN__)
  278.     #define wxCALLBACK wxSTDCALL
  279. #else
  280.     // no stdcall under Unix nor Win16
  281.     #define wxCALLBACK
  282. #endif // platform
  283.  
  284. // generic calling convention for the extern "C" functions
  285.  
  286. #if defined(__VISUALC__)
  287.   #define   wxC_CALLING_CONV    _cdecl
  288. #elif defined(__VISAGECPP__)
  289.   #define   wxC_CALLING_CONV    _Optlink
  290. #else   // !Visual C++
  291.   #define   wxC_CALLING_CONV
  292. #endif  // compiler
  293.  
  294. // callling convention for the qsort(3) callback
  295. #define wxCMPFUNC_CONV wxC_CALLING_CONV
  296.  
  297. // compatibility :-(
  298. #define CMPFUNC_CONV wxCMPFUNC_CONV
  299.  
  300. // ----------------------------------------------------------------------------
  301. // Making or using wxWindows as a Windows DLL
  302. // ----------------------------------------------------------------------------
  303.  
  304. #if defined(__WXMSW__)
  305.     // __declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well
  306.     // as VC++ and gcc
  307.     #if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__)
  308.         #define WXEXPORT __declspec(dllexport)
  309.         #define WXIMPORT __declspec(dllimport)
  310.     #else // compiler doesn't support __declspec()
  311.         #define WXEXPORT
  312.         #define WXIMPORT
  313.     #endif
  314. #elif defined(__WXPM__)
  315.     #if defined (__WATCOMC__)
  316.         #define WXEXPORT __declspec(dllexport)
  317.         // __declspec(dllimport) prepends __imp to imported symbols. We do NOT
  318.         // want that!
  319.         #define WXIMPORT
  320.     #elif (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 )))
  321.         #define WXEXPORT _Export
  322.         #define WXIMPORT _Export
  323.     #endif
  324. #elif defined(__WXMAC__)    
  325.     #ifdef __MWERKS__
  326.         #define WXEXPORT __declspec(export)
  327.         #define WXIMPORT __declspec(import)
  328.     #endif
  329. #endif
  330.  
  331. // for other platforms/compilers we don't anything
  332. #ifndef WXEXPORT
  333.     #define WXEXPORT
  334.     #define WXIMPORT
  335. #endif
  336.  
  337. // WXDLLEXPORT maps to export declaration when building the DLL, to import
  338. // declaration if using it or to nothing at all if we don't use wxWin DLL
  339. #ifdef WXMAKINGDLL
  340.     #define WXDLLEXPORT WXEXPORT
  341.     #define WXDLLEXPORT_DATA(type) WXEXPORT type
  342.     #define WXDLLEXPORT_CTORFN
  343. #elif defined(WXUSINGDLL)
  344.     #define WXDLLEXPORT WXIMPORT
  345.     #define WXDLLEXPORT_DATA(type) WXIMPORT type
  346.     #define WXDLLEXPORT_CTORFN
  347. #else // not making nor using DLL
  348.     #define WXDLLEXPORT
  349.     #define WXDLLEXPORT_DATA(type) type
  350.     #define WXDLLEXPORT_CTORFN
  351. #endif
  352.  
  353. // For ostream, istream ofstream
  354. #if defined(__BORLANDC__) && defined( _RTLDLL )
  355. #  define WXDLLIMPORT __import
  356. #else
  357. #  define WXDLLIMPORT
  358. #endif
  359.  
  360. #ifdef __cplusplus
  361. class WXDLLEXPORT wxObject;
  362. class WXDLLEXPORT wxEvent;
  363. #endif
  364.  
  365. // symbolic constant used by all Find()-like functions returning positive
  366. // integer on success as failure indicator
  367. #define wxNOT_FOUND       (-1)
  368.  
  369. // ----------------------------------------------------------------------------
  370. // Very common macros
  371. // ----------------------------------------------------------------------------
  372.  
  373. // Printf-like attribute definitions to obtain warnings with GNU C/C++
  374. #if defined(__GNUC__) && !wxUSE_UNICODE
  375. #  ifndef ATTRIBUTE_PRINTF
  376. #    define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
  377. #    define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
  378. #    define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
  379. #    define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
  380. #    define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
  381. #    define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
  382. #  endif /* ATTRIBUTE_PRINTF */
  383. #else
  384. #  ifndef ATTRIBUTE_PRINTF
  385. #    define ATTRIBUTE_PRINTF
  386. #    define ATTRIBUTE_PRINTF_1
  387. #    define ATTRIBUTE_PRINTF_2
  388. #    define ATTRIBUTE_PRINTF_3
  389. #    define ATTRIBUTE_PRINTF_4
  390. #    define ATTRIBUTE_PRINTF_5
  391. #  endif /* ATTRIBUTE_PRINTF */
  392. #endif
  393.  
  394. // everybody gets the assert and other debug macros
  395. #ifdef __cplusplus
  396. #include "wx/debug.h"
  397. #endif
  398.  
  399. // NULL declaration: it must be defined as 0 for C++ programs (in particular,
  400. // it must not be defined as "(void *)0" which is standard for C but completely
  401. // breaks C++ code)
  402. #include <stddef.h>
  403.  
  404. // Macro to cut down on compiler warnings.
  405. #if REMOVE_UNUSED_ARG
  406.     #define WXUNUSED(identifier) /* identifier */
  407. #else  // stupid, broken compiler
  408.     #define WXUNUSED(identifier) identifier
  409. #endif
  410.  
  411. // some arguments are only used in debug mode, but unused in release one
  412. #ifdef __WXDEBUG__
  413.     #define WXUNUSED_UNLESS_DEBUG(param)  param
  414. #else
  415.     #define WXUNUSED_UNLESS_DEBUG(param)  WXUNUSED(param)
  416. #endif
  417.  
  418. // delete pointer if it is not NULL and NULL it afterwards
  419. // (checking that it's !NULL before passing it to delete is just a
  420. //  a question of style, because delete will do it itself anyhow, but it might
  421. //  be considered as an error by some overzealous debugging implementations of
  422. //  the library, so we do it ourselves)
  423. #define wxDELETE(p)      if ( (p) != NULL ) { delete p; p = NULL; }
  424.  
  425. // delete an array and NULL it (see comments above)
  426. #define wxDELETEA(p)     if ( (p) ) { delete [] (p); p = NULL; }
  427.  
  428. // size of statically declared array
  429. #define WXSIZEOF(array)   (sizeof(array)/sizeof(array[0]))
  430.  
  431. // ----------------------------------------------------------------------------
  432. // compiler specific settings
  433. // ----------------------------------------------------------------------------
  434.  
  435. // to allow compiling with warning level 4 under Microsoft Visual C++ some
  436. // warnings just must be disabled
  437. #ifdef  __VISUALC__
  438.   #pragma warning(disable: 4514) // unreferenced inline func has been removed
  439. /*
  440.   you might be tempted to disable this one also: triggered by CHECK and FAIL
  441.   macros in debug.h, but it's, overall, a rather useful one, so I leave it and
  442.   will try to find some way to disable this warning just for CHECK/FAIL. Anyone?
  443. */
  444.   #pragma warning(disable: 4127) // conditional expression is constant
  445. #endif  // VC++
  446.  
  447. #if defined(__MWERKS__)
  448.     #undef try
  449.     #undef except
  450.     #undef finally
  451.     #define except(x) catch(...)
  452. #endif // Metrowerks
  453.  
  454. // where should i put this? we need to make sure of this as it breaks
  455. // the <iostream> code.
  456. #if !wxUSE_IOSTREAMH && defined(__WXDEBUG__)
  457. #  ifndef __MWERKS__
  458. // #undef __WXDEBUG__
  459. #    ifdef wxUSE_DEBUG_NEW_ALWAYS
  460. #    undef wxUSE_DEBUG_NEW_ALWAYS
  461. #    define wxUSE_DEBUG_NEW_ALWAYS 0
  462. #    endif
  463. #  endif
  464. #endif
  465.  
  466. // Callback function type definition
  467. #ifdef __cplusplus
  468. typedef void (*wxFunction) (wxObject&, wxEvent&);
  469. #endif
  470.  
  471. // ----------------------------------------------------------------------------
  472. // OS mnemonics -- Identify the running OS (useful for Windows)
  473. // ----------------------------------------------------------------------------
  474.  
  475. // Not all platforms are currently available or supported
  476. enum
  477. {
  478.     wxUNKNOWN_PLATFORM,
  479.     wxCURSES,                 // Text-only CURSES
  480.     wxXVIEW_X,                // Sun's XView OpenLOOK toolkit
  481.     wxMOTIF_X,                // OSF Motif 1.x.x
  482.     wxCOSE_X,                 // OSF Common Desktop Environment
  483.     wxNEXTSTEP,               // NeXTStep
  484.     wxMAC,                    // Apple Mac OS 8/9/X with Mac paths
  485.     wxMAC_DARWIN,             // Apple Mac OS X with Unix paths
  486.     wxBEOS,                   // BeOS
  487.     wxGTK,                    // GTK on X
  488.     wxGTK_WIN32,              // GTK on Win32
  489.     wxGTK_OS2,                // GTK on OS/2
  490.     wxGTK_BEOS,               // GTK on BeOS
  491.     wxGEOS,                   // GEOS
  492.     wxOS2_PM,                 // OS/2 Workplace
  493.     wxWINDOWS,                // Windows or WfW
  494.     wxMICROWINDOWS,           // MicroWindows
  495.     wxPENWINDOWS,             // Windows for Pen Computing
  496.     wxWINDOWS_NT,             // Windows NT
  497.     wxWIN32S,                 // Windows 32S API
  498.     wxWIN95,                  // Windows 95
  499.     wxWIN386,                 // Watcom 32-bit supervisor modus
  500.     wxMGL_UNIX,               // MGL with direct hardware access
  501.     wxMGL_X,                  // MGL on X
  502.     wxMGL_WIN32,              // MGL on Win32
  503.     wxMGL_OS2,                // MGL on OS/2
  504.     wxMGL_DOS,                // MGL on MS-DOS
  505.     wxWINDOWS_OS2,            // Native OS/2 PM
  506.     wxUNIX,                   // wxBase under Unix
  507.     wxX11                     // Plain X11 and Universal widgets
  508. };
  509.  
  510. // ----------------------------------------------------------------------------
  511. // standard wxWindows types
  512. // ----------------------------------------------------------------------------
  513.  
  514. // the type for screen and DC coordinates
  515.  
  516. #if wxUSE_COMPATIBLE_COORD_TYPES
  517.     // to ensure compatibility with 2.0, we must use long
  518.     #define wxCoord long
  519. #else  // !wxUSE_COMPATIBLE_COORD_TYPES
  520.     #ifdef __WIN16__
  521.         // under Win16, int is too small, so use long to allow for bigger
  522.         // virtual canvases
  523.         typedef long wxCoord;
  524.     #else // !Win16
  525.         // other platforms we support have at least 32bit int - quite enough
  526.         typedef int wxCoord;
  527.     #endif // Win16/!Win16
  528. #endif // wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES
  529.  
  530. // fixed length types
  531.  
  532. #define wxInt8    char    signed
  533. #define wxUint8   char  unsigned
  534.  
  535. #ifdef __WINDOWS__
  536.     #if defined(__WIN16__)
  537.         #define wxInt16    int    signed
  538.         #define wxUint16   int  unsigned
  539.         #define wxInt32   long    signed
  540.         #define wxUint32  long  unsigned
  541.     #elif defined(__WIN32__)
  542.         #define wxInt16  short    signed
  543.         #define wxUint16 short  unsigned
  544.         #define wxInt32    int    signed
  545.         #define wxUint32   int  unsigned
  546.     #else
  547.         // Win64 will have different type sizes
  548.         #error "Please define a 32 bit type"
  549.     #endif
  550. #else // !Windows
  551.     // SIZEOF_XXX are defined by configure
  552.     #if defined(SIZEOF_INT) && (SIZEOF_INT == 4)
  553.         #define wxInt16  short    signed
  554.         #define wxUint16 short  unsigned
  555.         #define wxInt32    int    signed
  556.         #define wxUint32   int  unsigned
  557.     #elif defined(SIZEOF_INT) && (SIZEOF_INT == 2)
  558.         #define wxInt16    int    signed
  559.         #define wxUint16   int  unsigned
  560.         #define wxInt32   long    signed
  561.         #define wxUint32  long  unsigned
  562.     #else
  563.         // assume sizeof(int) == 4 - what else can we do
  564.         wxCOMPILE_TIME_ASSERT( sizeof(int) == 4, IntMustBeExactly4Bytes);
  565.  
  566.         #define wxInt16  short    signed
  567.         #define wxUint16 short  unsigned
  568.         #define wxInt32    int    signed
  569.         #define wxUint32   int  unsigned
  570.     #endif
  571. #endif // Win/!Win
  572.  
  573. #if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
  574. #define wxInt64   long    signed
  575. #define wxUint64  long  unsigned
  576. #elif defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8)
  577. #define wxInt64   long long    signed
  578. #define wxUint64  long long  unsigned
  579. #else   // FIXME: what else can we do here aside from implementing wxULongLong
  580. #define wxInt64   wxLongLong
  581. #define wxUint64  wxULongLong
  582. #endif
  583.  
  584. #define  wxByte   wxUint8
  585. #define  wxWord   wxUint16
  586.  
  587. // base floating point types
  588. // wxFloat32 : 32 bit IEEE float ( 1 sign , 8 exponent bits , 23 fraction bits
  589. // wxFloat64 : 64 bit IEEE float ( 1 sign , 11 exponent bits , 52 fraction bits
  590. // wxDouble : native fastest representation that has at least wxFloat64
  591. //            precision, so use the IEEE types for storage , and this for calculations
  592.  
  593. typedef float wxFloat32 ;
  594. #if defined( __WXMAC__ )  && defined (__MWERKS__)
  595.     typedef short double wxFloat64;
  596. #else
  597.     typedef double wxFloat64;
  598. #endif
  599.  
  600. #if defined( __WXMAC__ )  && !defined( __POWERPC__ )
  601.     typedef long double wxDouble;
  602. #else
  603.     typedef double wxDouble ;
  604. #endif
  605.  
  606. // ----------------------------------------------------------------------------
  607. // byte ordering related definition and macros
  608. // ----------------------------------------------------------------------------
  609.  
  610. // byte sex
  611.  
  612. #define  wxBIG_ENDIAN     4321
  613. #define  wxLITTLE_ENDIAN  1234
  614. #define  wxPDP_ENDIAN     3412
  615.  
  616. #ifdef WORDS_BIGENDIAN
  617. #define  wxBYTE_ORDER  wxBIG_ENDIAN
  618. #else
  619. #define  wxBYTE_ORDER  wxLITTLE_ENDIAN
  620. #endif
  621.  
  622. // byte swapping
  623.  
  624. #if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh )
  625. // assembler versions for these
  626. #ifdef __POWERPC__
  627.     inline wxUint16 wxUINT16_SWAP_ALWAYS( wxUint16 i )
  628.         {return (__lhbrx( &i , 0 ) ) ;}
  629.     inline wxInt16 wxINT16_SWAP_ALWAYS( wxInt16 i )
  630.         {return (__lhbrx( &i , 0 ) ) ;}
  631.     inline wxUint32 wxUINT32_SWAP_ALWAYS( wxUint32 i )
  632.         {return (__lwbrx( &i , 0 ) ) ;}
  633.     inline wxInt32 wxINT32_SWAP_ALWAYS( wxInt32 i )
  634.         {return (__lwbrx( &i , 0 ) ) ;}
  635. #else
  636.     #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0)
  637.     pascal wxUint16 wxUINT16_SWAP_ALWAYS(wxUint16 value)
  638.         = { 0xE158 };
  639.  
  640.     #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0)
  641.     pascal wxInt16 wxINT16_SWAP_ALWAYS(wxInt16 value)
  642.         = { 0xE158 };
  643.  
  644.     #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0)
  645.     pascal wxUint32 wxUINT32_SWAP_ALWAYS(wxUint32 value)
  646.         = { 0xE158, 0x4840, 0xE158 };
  647.  
  648.     #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0)
  649.     pascal wxInt32 wxINT32_SWAP_ALWAYS(wxInt32 value)
  650.         = { 0xE158, 0x4840, 0xE158 };
  651.  
  652. #endif
  653. #else // !MWERKS
  654. #define wxUINT16_SWAP_ALWAYS(val) \
  655.    ((wxUint16) ( \
  656.     (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
  657.     (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
  658.  
  659. #define wxINT16_SWAP_ALWAYS(val) \
  660.    ((wxInt16) ( \
  661.     (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \
  662.     (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8)))
  663.  
  664. #define wxUINT32_SWAP_ALWAYS(val) \
  665.    ((wxUint32) ( \
  666.     (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
  667.     (((wxUint32) (val) & (wxUint32) 0x0000ff00U) <<  8) | \
  668.     (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >>  8) | \
  669.     (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
  670.  
  671. #define wxINT32_SWAP_ALWAYS(val) \
  672.    ((wxInt32) ( \
  673.     (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \
  674.     (((wxUint32) (val) & (wxUint32) 0x0000ff00U) <<  8) | \
  675.     (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >>  8) | \
  676.     (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24)))
  677. #endif
  678. // machine specific byte swapping
  679.  
  680. #if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
  681. #define wxUINT64_SWAP_ALWAYS(val) \
  682.    ((wxUint64) ( \
  683.     (((wxUint64) (val) & (wxUint64) 0x00000000000000ffUL) << 56) | \
  684.     (((wxUint64) (val) & (wxUint64) 0x000000000000ff00UL) << 40) | \
  685.     (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000UL) << 24) | \
  686.     (((wxUint64) (val) & (wxUint64) 0x00000000ff000000UL) <<  8) | \
  687.     (((wxUint64) (val) & (wxUint64) 0x000000ff00000000UL) >>  8) | \
  688.     (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000UL) >> 24) | \
  689.     (((wxUint64) (val) & (wxUint64) 0x00ff000000000000UL) >> 40) | \
  690.     (((wxUint64) (val) & (wxUint64) 0xff00000000000000UL) >> 56)))
  691.  
  692. #define wxINT64_SWAP_ALWAYS(val) \
  693.    ((wxInt64) ( \
  694.     (((wxUint64) (val) & (wxUint64) 0x00000000000000ffUL) << 56) | \
  695.     (((wxUint64) (val) & (wxUint64) 0x000000000000ff00UL) << 40) | \
  696.     (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000UL) << 24) | \
  697.     (((wxUint64) (val) & (wxUint64) 0x00000000ff000000UL) <<  8) | \
  698.     (((wxUint64) (val) & (wxUint64) 0x000000ff00000000UL) >>  8) | \
  699.     (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000UL) >> 24) | \
  700.     (((wxUint64) (val) & (wxUint64) 0x00ff000000000000UL) >> 40) | \
  701.     (((wxUint64) (val) & (wxUint64) 0xff00000000000000UL) >> 56)))
  702.  
  703. #elif defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8)
  704. #define wxUINT64_SWAP_ALWAYS(val) \
  705.    ((wxUint64) ( \
  706.     (((wxUint64) (val) & (wxUint64) 0x00000000000000ffULL) << 56) | \
  707.     (((wxUint64) (val) & (wxUint64) 0x000000000000ff00ULL) << 40) | \
  708.     (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000ULL) << 24) | \
  709.     (((wxUint64) (val) & (wxUint64) 0x00000000ff000000ULL) <<  8) | \
  710.     (((wxUint64) (val) & (wxUint64) 0x000000ff00000000ULL) >>  8) | \
  711.     (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000ULL) >> 24) | \
  712.     (((wxUint64) (val) & (wxUint64) 0x00ff000000000000ULL) >> 40) | \
  713.     (((wxUint64) (val) & (wxUint64) 0xff00000000000000ULL) >> 56)))
  714.  
  715. #define wxINT64_SWAP_ALWAYS(val) \
  716.    ((wxInt64) ( \
  717.     (((wxUint64) (val) & (wxUint64) 0x00000000000000ffULL) << 56) | \
  718.     (((wxUint64) (val) & (wxUint64) 0x000000000000ff00ULL) << 40) | \
  719.     (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000ULL) << 24) | \
  720.     (((wxUint64) (val) & (wxUint64) 0x00000000ff000000ULL) <<  8) | \
  721.     (((wxUint64) (val) & (wxUint64) 0x000000ff00000000ULL) >>  8) | \
  722.     (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000ULL) >> 24) | \
  723.     (((wxUint64) (val) & (wxUint64) 0x00ff000000000000ULL) >> 40) | \
  724.     (((wxUint64) (val) & (wxUint64) 0xff00000000000000ULL) >> 56)))
  725.  
  726. #else
  727. #define wxUINT64_SWAP_ALWAYS(val) \
  728.    ((wxUint64) ( \
  729.     ((wxULongLong(val) & wxULongLong(0L, 0x000000ffU)) << 56) | \
  730.     ((wxULongLong(val) & wxULongLong(0L, 0x0000ff00U)) << 40) | \
  731.     ((wxULongLong(val) & wxULongLong(0L, 0x00ff0000U)) << 24) | \
  732.     ((wxULongLong(val) & wxULongLong(0L, 0xff000000U)) <<  8) | \
  733.     ((wxULongLong(val) & wxULongLong(0x000000ffL, 0U)) >>  8) | \
  734.     ((wxULongLong(val) & wxULongLong(0x0000ff00L, 0U)) >> 24) | \
  735.     ((wxULongLong(val) & wxULongLong(0x00ff0000L, 0U)) >> 40) | \
  736.     ((wxULongLong(val) & wxULongLong(0xff000000L, 0U)) >> 56)))
  737.  
  738. #define wxINT64_SWAP_ALWAYS(val) \
  739.    ((wxInt64) ( \
  740.     ((wxLongLong(val) & wxLongLong(0L, 0x000000ffU)) << 56) | \
  741.     ((wxLongLong(val) & wxLongLong(0L, 0x0000ff00U)) << 40) | \
  742.     ((wxLongLong(val) & wxLongLong(0L, 0x00ff0000U)) << 24) | \
  743.     ((wxLongLong(val) & wxLongLong(0L, 0xff000000U)) <<  8) | \
  744.     ((wxLongLong(val) & wxLongLong(0x000000ffL, 0U)) >>  8) | \
  745.     ((wxLongLong(val) & wxLongLong(0x0000ff00L, 0U)) >> 24) | \
  746.     ((wxLongLong(val) & wxLongLong(0x00ff0000L, 0U)) >> 40) | \
  747.     ((wxLongLong(val) & wxLongLong(0xff000000L, 0U)) >> 56)))
  748. #endif
  749.  
  750. #ifdef WORDS_BIGENDIAN
  751.   #define wxUINT16_SWAP_ON_BE(val)  wxUINT16_SWAP_ALWAYS(val)
  752.   #define wxINT16_SWAP_ON_BE(val)   wxINT16_SWAP_ALWAYS(val)
  753.   #define wxUINT16_SWAP_ON_LE(val)  (val)
  754.   #define wxINT16_SWAP_ON_LE(val)   (val)
  755.   #define wxUINT32_SWAP_ON_BE(val)  wxUINT32_SWAP_ALWAYS(val)
  756.   #define wxINT32_SWAP_ON_BE(val)   wxINT32_SWAP_ALWAYS(val)
  757.   #define wxUINT32_SWAP_ON_LE(val)  (val)
  758.   #define wxINT32_SWAP_ON_LE(val)   (val)
  759.   #define wxUINT64_SWAP_ON_BE(val)  wxUINT64_SWAP_ALWAYS(val)
  760.   #define wxUINT64_SWAP_ON_LE(val)  (val)
  761. #else
  762.   #define wxUINT16_SWAP_ON_LE(val)  wxUINT16_SWAP_ALWAYS(val)
  763.   #define wxINT16_SWAP_ON_LE(val)   wxINT16_SWAP_ALWAYS(val)
  764.   #define wxUINT16_SWAP_ON_BE(val)  (val)
  765.   #define wxINT16_SWAP_ON_BE(val)   (val)
  766.   #define wxUINT32_SWAP_ON_LE(val)  wxUINT32_SWAP_ALWAYS(val)
  767.   #define wxINT32_SWAP_ON_LE(val)   wxINT32_SWAP_ALWAYS(val)
  768.   #define wxUINT32_SWAP_ON_BE(val)  (val)
  769.   #define wxINT32_SWAP_ON_BE(val)   (val)
  770.   #define wxUINT64_SWAP_ON_LE(val)  wxUINT64_SWAP_ALWAYS(val)
  771.   #define wxUINT64_SWAP_ON_BE(val)  (val)
  772. #endif
  773.  
  774. // ----------------------------------------------------------------------------
  775. // Geometric flags
  776. // ----------------------------------------------------------------------------
  777.  
  778. enum wxGeometryCentre
  779. {
  780.     wxCENTRE                  = 0x0001,
  781.     wxCENTER                  = wxCENTRE
  782. };
  783.  
  784. // centering into frame rather than screen (obsolete)
  785. #define wxCENTER_FRAME          0x0000
  786. // centre on screen rather than parent
  787. #define wxCENTRE_ON_SCREEN      0x0002
  788. #define wxCENTER_ON_SCREEN      wxCENTRE_ON_SCREEN
  789.  
  790. enum wxOrientation
  791. {
  792.     wxHORIZONTAL              = 0x0004,
  793.     wxVERTICAL                = 0x0008,
  794.  
  795.     wxBOTH                    = (wxVERTICAL | wxHORIZONTAL)
  796. };
  797.  
  798. enum wxDirection
  799. {
  800.     wxLEFT                    = 0x0010,
  801.     wxRIGHT                   = 0x0020,
  802.     wxUP                      = 0x0040,
  803.     wxDOWN                    = 0x0080,
  804.  
  805.     wxTOP                     = wxUP,
  806.     wxBOTTOM                  = wxDOWN,
  807.  
  808.     wxNORTH                   = wxUP,
  809.     wxSOUTH                   = wxDOWN,
  810.     wxWEST                    = wxLEFT,
  811.     wxEAST                    = wxRIGHT,
  812.  
  813.     wxALL                     = (wxUP | wxDOWN | wxRIGHT | wxLEFT)
  814. };
  815.  
  816. enum wxAlignment
  817. {
  818.     wxALIGN_NOT               = 0x0000,
  819.     wxALIGN_CENTER_HORIZONTAL = 0x0100,
  820.     wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL,
  821.     wxALIGN_LEFT              = wxALIGN_NOT,
  822.     wxALIGN_TOP               = wxALIGN_NOT,
  823.     wxALIGN_RIGHT             = 0x0200,
  824.     wxALIGN_BOTTOM            = 0x0400,
  825.     wxALIGN_CENTER_VERTICAL   = 0x0800,
  826.     wxALIGN_CENTRE_VERTICAL   = wxALIGN_CENTER_VERTICAL,
  827.  
  828.     wxALIGN_CENTER            = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL),
  829.     wxALIGN_CENTRE            = wxALIGN_CENTER,
  830.  
  831.     // a mask to extract alignment from the combination of flags
  832.     wxALIGN_MASK              = 0x0f00
  833. };
  834.  
  835. enum wxStretch
  836. {
  837.     wxSTRETCH_NOT             = 0x0000,
  838.     wxSHRINK                  = 0x1000,
  839.     wxGROW                    = 0x2000,
  840.     wxEXPAND                  = wxGROW,
  841.     wxSHAPED                  = 0x4000,
  842.     wxADJUST_MINSIZE          = 0x8000,
  843.     wxTILE                    = 0xc000
  844. };
  845.  
  846. // border flags: the values are chosen for backwards compatibility
  847. enum wxBorder
  848. {
  849.     // this is different from wxBORDER_NONE as by default the controls do have
  850.     // border
  851.     wxBORDER_DEFAULT = 0,
  852.  
  853.     wxBORDER_NONE   = 0x00200000,
  854.     wxBORDER_STATIC = 0x01000000,
  855.     wxBORDER_SIMPLE = 0x02000000,
  856.     wxBORDER_RAISED = 0x04000000,
  857.     wxBORDER_SUNKEN = 0x08000000,
  858.     wxBORDER_DOUBLE = 0x10000000,
  859.  
  860.     // a mask to extract border style from the combination of flags
  861.     wxBORDER_MASK   = 0x1f200000
  862. };
  863.  
  864. // ----------------------------------------------------------------------------
  865. // Window style flags
  866. // ----------------------------------------------------------------------------
  867.  
  868. /*
  869.  * Values are chosen so they can be |'ed in a bit list.
  870.  * Some styles are used across more than one group,
  871.  * so the values mustn't clash with others in the group.
  872.  * Otherwise, numbers can be reused across groups.
  873.  *
  874.  * From version 1.66:
  875.  * Window (cross-group) styles now take up the first half
  876.  * of the flag, and control-specific styles the
  877.  * second half.
  878.  *
  879.  */
  880.  
  881. /*
  882.  * Window (Frame/dialog/subwindow/panel item) style flags
  883.  */
  884. #define wxVSCROLL               0x80000000
  885. #define wxHSCROLL               0x40000000
  886. #define wxCAPTION               0x20000000
  887.  
  888. // New styles (border styles are now in their own enum)
  889. #define wxDOUBLE_BORDER         wxBORDER_DOUBLE
  890. #define wxSUNKEN_BORDER         wxBORDER_SUNKEN
  891. #define wxRAISED_BORDER         wxBORDER_RAISED
  892. #define wxBORDER                wxBORDER_SIMPLE
  893. #define wxSIMPLE_BORDER         wxBORDER_SIMPLE
  894. #define wxSTATIC_BORDER         wxBORDER_STATIC
  895. #define wxNO_BORDER             wxBORDER_NONE
  896.  
  897. // Override CTL3D etc. control colour processing to allow own background
  898. // colour.
  899. // Override CTL3D or native 3D styles for children
  900. #define wxNO_3D                 0x00800000
  901.  
  902. // OBSOLETE - use wxNO_3D instead
  903. #define wxUSER_COLOURS          wxNO_3D
  904.  
  905. // wxALWAYS_SHOW_SB: instead of hiding the scrollbar when it is not needed,
  906. // disable it - but still show (see also wxLB_ALWAYS_SB style)
  907. //
  908. // NB: as this style is only supported by wxUniversal so far as it doesn't use
  909. //     wxUSER_COLOURS/wxNO_3D, we reuse the same style value
  910. #define wxALWAYS_SHOW_SB        0x00800000
  911.  
  912. // Clip children when painting, which reduces flicker in e.g. frames and
  913. // splitter windows, but can't be used in a panel where a static box must be
  914. // 'transparent' (panel paints the background for it)
  915. #define wxCLIP_CHILDREN         0x00400000
  916.  
  917. // Note we're reusing the wxCAPTION style because we won't need captions
  918. // for subwindows/controls
  919. #define wxCLIP_SIBLINGS         0x20000000
  920.  
  921. #define wxTRANSPARENT_WINDOW    0x00100000
  922.  
  923. // Add this style to a panel to get tab traversal working outside of dialogs
  924. // (on by default for wxPanel, wxDialog, wxScrolledWindow)
  925. #define wxTAB_TRAVERSAL         0x00080000
  926.  
  927. // Add this style if the control wants to get all keyboard messages (under
  928. // Windows, it won't normally get the dialog navigation key events)
  929. #define wxWANTS_CHARS           0x00040000
  930.  
  931. // Make window retained (mostly Motif, I think) -- obsolete (VZ)?
  932. #define wxRETAINED              0x00020000
  933. #define wxBACKINGSTORE          wxRETAINED
  934.  
  935. // set this flag to create a special popup window: it will be always shown on
  936. // top of other windows, will capture the mouse and will be dismissed when the
  937. // mouse is clicked outside of it or if it loses focus in any other way
  938. #define wxPOPUP_WINDOW          0x00020000
  939.  
  940. // don't invalidate the whole window (resulting in a PAINT event) when the
  941. // window is resized (currently, makes sense for wxMSW only)
  942. #define wxNO_FULL_REPAINT_ON_RESIZE 0x00010000
  943.  
  944. /*
  945.  * Extra window style flags (use wxWS_EX prefix to make it clear that they
  946.  * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle())
  947.  */
  948.  
  949. // by default, TransferDataTo/FromWindow() only work on direct children of the
  950. // window (compatible behaviour), set this flag to make them recursively
  951. // descend into all subwindows
  952. #define wxWS_EX_VALIDATE_RECURSIVELY    0x00000001
  953.  
  954. // wxCommandEvents and the objects of the derived classes are forwarded to the
  955. // parent window and so on recursively by default. Using this flag for the
  956. // given window allows to block this propagation at this window, i.e. prevent
  957. // the events from being propagated further upwards. The dialogs have this
  958. // flag on by default.
  959. #define wxWS_EX_BLOCK_EVENTS            0x00000002
  960.  
  961. // don't use this window as an implicit parent for the other windows: this must
  962. // be used with transient windows as otherwise there is the risk of creating a
  963. // dialog/frame with this window as a parent which would lead to a crash if the
  964. // parent is destroyed before the child
  965. #define wxWS_EX_TRANSIENT               0x00000004
  966.  
  967. // Use this style to add a context-sensitive help to the window (currently for
  968. // Win32 only and it doesn't work if wxMINIMIZE_BOX or wxMAXIMIZE_BOX are used)
  969. #define wxFRAME_EX_CONTEXTHELP  0x00000004
  970. #define wxDIALOG_EX_CONTEXTHELP 0x00000004
  971.  
  972. /*
  973.  * wxFrame/wxDialog style flags
  974.  */
  975. #define wxSTAY_ON_TOP           0x8000
  976. #define wxICONIZE               0x4000
  977. #define wxMINIMIZE              wxICONIZE
  978. #define wxMAXIMIZE              0x2000
  979.                                         // free flag value: 0x1000
  980. #define wxSYSTEM_MENU           0x0800
  981. #define wxMINIMIZE_BOX          0x0400
  982. #define wxMAXIMIZE_BOX          0x0200
  983. #define wxTINY_CAPTION_HORIZ    0x0100
  984. #define wxTINY_CAPTION_VERT     0x0080
  985. #define wxRESIZE_BORDER         0x0040
  986.  
  987. #define wxDIALOG_NO_PARENT      0x0001  // Don't make owned by apps top window
  988. #define wxFRAME_NO_TASKBAR      0x0002  // No taskbar button (MSW only)
  989. #define wxFRAME_TOOL_WINDOW     0x0004  // No taskbar button, no system menu
  990. #define wxFRAME_FLOAT_ON_PARENT 0x0008  // Always above its parent
  991.  
  992. // deprecated versions defined for compatibility reasons
  993. #define wxRESIZE_BOX            wxMAXIMIZE_BOX
  994. #define wxTHICK_FRAME           wxRESIZE_BORDER
  995.  
  996. // obsolete styles, unused any more
  997. #define wxDIALOG_MODAL          0x0020  // free flag value 0x0020
  998. #define wxDIALOG_MODELESS       0x0000
  999.  
  1000. /*
  1001.  * MDI parent frame style flags
  1002.  * Can overlap with some of the above.
  1003.  */
  1004.  
  1005. #define wxFRAME_NO_WINDOW_MENU  0x0100
  1006.  
  1007. #if WXWIN_COMPATIBILITY
  1008. #define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE
  1009. #endif
  1010.  
  1011. #define wxDEFAULT_FRAME_STYLE \
  1012.   (wxSYSTEM_MENU | wxRESIZE_BORDER | \
  1013.    wxMINIMIZE_BOX | wxMAXIMIZE_BOX | \
  1014.    wxCAPTION | wxCLIP_CHILDREN)
  1015.  
  1016. #if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMGL__)
  1017. #   define wxDEFAULT_DIALOG_STYLE  (wxSYSTEM_MENU | wxCAPTION)
  1018. #else
  1019. //  Under Unix, the dialogs don't have a system menu. Specifying wxSYSTEM_MENU
  1020. //  here will make a close button appear.
  1021. #   define wxDEFAULT_DIALOG_STYLE  wxCAPTION
  1022. #endif
  1023.  
  1024. /*
  1025.  * wxExtDialog style flags
  1026.  */
  1027. #define wxED_CLIENT_MARGIN      0x0004
  1028. #define wxED_BUTTONS_BOTTOM     0x0000  // has no effect
  1029. #define wxED_BUTTONS_RIGHT      0x0002
  1030. #define wxED_STATIC_LINE        0x0001
  1031.  
  1032. #if defined(__WXMSW__) || defined(__WXMAC__)
  1033. #   define wxEXT_DIALOG_STYLE  (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN)
  1034. #else
  1035. #   define wxEXT_DIALOG_STYLE  (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN|wxED_STATIC_LINE)
  1036. #endif
  1037.  
  1038. /*
  1039.  * wxMenuBar style flags
  1040.  */
  1041. // use native docking
  1042. #define wxMB_DOCKABLE       0x0001
  1043.  
  1044. /*
  1045.  * wxMenu style flags
  1046.  */
  1047. #define wxMENU_TEAROFF      0x0001
  1048.  
  1049. /*
  1050.  * Apply to all panel items
  1051.  */
  1052. #define wxCOLOURED          0x0800
  1053. #define wxFIXED_LENGTH      0x0400
  1054.  
  1055. /*
  1056.  * Styles for wxListBox
  1057.  */
  1058. #define wxLB_SORT           0x0010
  1059. #define wxLB_SINGLE         0x0020
  1060. #define wxLB_MULTIPLE       0x0040
  1061. #define wxLB_EXTENDED       0x0080
  1062. // wxLB_OWNERDRAW is Windows-only
  1063. #define wxLB_OWNERDRAW      0x0100
  1064. #define wxLB_NEEDED_SB      0x0200
  1065. #define wxLB_ALWAYS_SB      0x0400
  1066. #define wxLB_HSCROLL        wxHSCROLL
  1067. // always show an entire number of rows
  1068. #define wxLB_INT_HEIGHT     0x0800
  1069.  
  1070. // deprecated synonyms
  1071. #define wxPROCESS_ENTER     0x0400  // wxTE_PROCESS_ENTER
  1072. #define wxPASSWORD          0x0800  // wxTE_PASSWORD
  1073.  
  1074. /*
  1075.  * wxComboBox style flags
  1076.  */
  1077. #define wxCB_SIMPLE         0x0004
  1078. #define wxCB_SORT           0x0008
  1079. #define wxCB_READONLY       0x0010
  1080. #define wxCB_DROPDOWN       0x0020
  1081.  
  1082. /*
  1083.  * wxRadioBox style flags
  1084.  */
  1085. // should we number the items from left to right or from top to bottom in a 2d
  1086. // radiobox?
  1087. #define wxRA_LEFTTORIGHT    0x0001
  1088. #define wxRA_TOPTOBOTTOM    0x0002
  1089.  
  1090. // New, more intuitive names to specify majorDim argument
  1091. #define wxRA_SPECIFY_COLS   wxHORIZONTAL
  1092. #define wxRA_SPECIFY_ROWS   wxVERTICAL
  1093.  
  1094. // Old names for compatibility
  1095. #define wxRA_HORIZONTAL     wxHORIZONTAL
  1096. #define wxRA_VERTICAL       wxVERTICAL
  1097.  
  1098. /*
  1099.  * wxRadioButton style flag
  1100.  */
  1101. #define wxRB_GROUP          0x0004
  1102. #define wxRB_SINGLE         0x0008
  1103.  
  1104. /*
  1105.  * wxGauge flags
  1106.  */
  1107. #define wxGA_HORIZONTAL      wxHORIZONTAL
  1108. #define wxGA_VERTICAL        wxVERTICAL
  1109. #define wxGA_PROGRESSBAR     0x0010
  1110. // Windows only
  1111. #define wxGA_SMOOTH          0x0020
  1112.  
  1113. /*
  1114.  * wxSlider flags
  1115.  */
  1116. #define wxSL_HORIZONTAL      wxHORIZONTAL // 4
  1117. #define wxSL_VERTICAL        wxVERTICAL   // 8
  1118. // The next one is obsolete - use scroll events instead
  1119. #define wxSL_NOTIFY_DRAG     0x0000
  1120. #define wxSL_TICKS           0x0010
  1121. #define wxSL_AUTOTICKS       wxSL_TICKS // we don't support manual ticks
  1122. #define wxSL_LABELS          0x0020
  1123. #define wxSL_LEFT            0x0040
  1124. #define wxSL_TOP             0x0080
  1125. #define wxSL_RIGHT           0x0100
  1126. #define wxSL_BOTTOM          0x0200
  1127. #define wxSL_BOTH            0x0400
  1128. #define wxSL_SELRANGE        0x0800
  1129.  
  1130. /*
  1131.  * wxScrollBar flags
  1132.  */
  1133. #define wxSB_HORIZONTAL      wxHORIZONTAL
  1134. #define wxSB_VERTICAL        wxVERTICAL
  1135.  
  1136. /*
  1137.  * wxSpinButton flags.
  1138.  * Note that a wxSpinCtrl is sometimes defined as
  1139.  * a wxTextCtrl, and so the flags must be different
  1140.  * from wxTextCtrl's.
  1141.  */
  1142. #define wxSP_HORIZONTAL       wxHORIZONTAL // 4
  1143. #define wxSP_VERTICAL         wxVERTICAL   // 8
  1144. #define wxSP_ARROW_KEYS       0x1000
  1145. #define wxSP_WRAP             0x2000
  1146.  
  1147. /*
  1148.  * wxSplitterWindow flags
  1149.  */
  1150. #define wxSP_NOBORDER         0x0000
  1151. #define wxSP_NOSASH           0x0010
  1152. #define wxSP_BORDER           0x0020
  1153. #define wxSP_PERMIT_UNSPLIT   0x0040
  1154. #define wxSP_LIVE_UPDATE      0x0080
  1155. #define wxSP_3DSASH           0x0100
  1156. #define wxSP_3DBORDER         0x0200
  1157. #define wxSP_FULLSASH         0x0400
  1158. #define wxSP_3D               (wxSP_3DBORDER | wxSP_3DSASH)
  1159. #define wxSP_SASH_AQUA        0x0800
  1160.  
  1161. /*
  1162.  * wxNotebook flags
  1163.  */
  1164. #define wxNB_FIXEDWIDTH       0x0010
  1165. #define wxNB_TOP              0x0000    // default
  1166. #define wxNB_LEFT             0x0020
  1167. #define wxNB_RIGHT            0x0040
  1168. #define wxNB_BOTTOM           0x0080
  1169. #define wxNB_MULTILINE        0x0100
  1170.  
  1171. /*
  1172.  * wxTabCtrl flags
  1173.  */
  1174. #define wxTC_RIGHTJUSTIFY     0x0010
  1175. #define wxTC_FIXEDWIDTH       0x0020
  1176. #define wxTC_TOP              0x0000    // default
  1177. #define wxTC_LEFT             0x0020
  1178. #define wxTC_RIGHT            0x0040
  1179. #define wxTC_BOTTOM           0x0080
  1180. #define wxTC_MULTILINE        wxNB_MULTILINE
  1181. #define wxTC_OWNERDRAW        0x0200
  1182.  
  1183. // wxToolBar style flags
  1184. #define wxTB_HORIZONTAL     wxHORIZONTAL    // == 0x0004
  1185. #define wxTB_VERTICAL       wxVERTICAL      // == 0x0008
  1186. #define wxTB_3DBUTTONS      0x0010
  1187. #define wxTB_FLAT           0x0020          // supported only under Win98+/GTK
  1188. #define wxTB_DOCKABLE       0x0040          // use native docking under GTK
  1189. #define wxTB_NOICONS        0x0080          // don't show the icons
  1190. #define wxTB_TEXT           0x0100          // show the text
  1191. #define wxTB_NODIVIDER      0x0200          // don't show the divider (Windows)
  1192. #define wxTB_NOALIGN        0x0400          // no automatic alignment (Windows)
  1193.  
  1194. /*
  1195.  * wxStatusBar95 flags
  1196.  */
  1197. #define wxST_SIZEGRIP         0x0010
  1198.  
  1199. /*
  1200.  * wxStaticText flags
  1201.  */
  1202. #define wxST_NO_AUTORESIZE    0x0001
  1203.  
  1204. /*
  1205.  * wxStaticBitmap flags
  1206.  */
  1207. #define wxBI_EXPAND           wxEXPAND
  1208.  
  1209. /*
  1210.  * wxStaticLine flags
  1211.  */
  1212. #define wxLI_HORIZONTAL         wxHORIZONTAL
  1213. #define wxLI_VERTICAL           wxVERTICAL
  1214.  
  1215. /*
  1216.  * wxProgressDialog flags
  1217.  */
  1218. #define wxPD_CAN_ABORT          0x0001
  1219. #define wxPD_APP_MODAL          0x0002
  1220. #define wxPD_AUTO_HIDE          0x0004
  1221. #define wxPD_ELAPSED_TIME       0x0008
  1222. #define wxPD_ESTIMATED_TIME     0x0010
  1223. // wxGA_SMOOTH = 0x0020 may also be used with wxProgressDialog
  1224. // NO!!! This is wxDIALOG_MODAL and will cause the progress dialog to
  1225. // be modal. No progress will then be made at all.
  1226. #define wxPD_REMAINING_TIME     0x0040
  1227.  
  1228. /*
  1229.  * wxDirDialog styles
  1230.  */
  1231.  
  1232. #define wxDD_NEW_DIR_BUTTON     0x0080
  1233.  
  1234. /*
  1235.  * extended dialog specifiers. these values are stored in a different
  1236.  * flag and thus do not overlap with other style flags. note that these
  1237.  * values do not correspond to the return values of the dialogs (for
  1238.  * those values, look at the wxID_XXX defines).
  1239.  */
  1240.  
  1241. // wxCENTRE already defined as  0x00000001
  1242. #define wxYES                   0x00000002
  1243. #define wxOK                    0x00000004
  1244. #define wxNO                    0x00000008
  1245. #define wxYES_NO                (wxYES | wxNO)
  1246. #define wxCANCEL                0x00000010
  1247.  
  1248. #define wxYES_DEFAULT           0x00000000  // has no effect (default)
  1249. #define wxNO_DEFAULT            0x00000080
  1250.  
  1251. #define wxICON_EXCLAMATION      0x00000100
  1252. #define wxICON_HAND             0x00000200
  1253. #define wxICON_WARNING          wxICON_EXCLAMATION
  1254. #define wxICON_ERROR            wxICON_HAND
  1255. #define wxICON_QUESTION         0x00000400
  1256. #define wxICON_INFORMATION      0x00000800
  1257. #define wxICON_STOP             wxICON_HAND
  1258. #define wxICON_ASTERISK         wxICON_INFORMATION
  1259. #define wxICON_MASK             (0x00000100|0x00000200|0x00000400|0x00000800)
  1260.  
  1261. #define  wxFORWARD              0x00001000
  1262. #define  wxBACKWARD             0x00002000
  1263. #define  wxRESET                0x00004000
  1264. #define  wxHELP                 0x00008000
  1265. #define  wxMORE                 0x00010000
  1266. #define  wxSETUP                0x00020000
  1267.  
  1268. // ----------------------------------------------------------------------------
  1269. // standard IDs
  1270. // ----------------------------------------------------------------------------
  1271.  
  1272. // any id: means that we don't care about the id, whether when installing an
  1273. // event handler or when creating a new window
  1274. enum
  1275. {
  1276.     wxID_ANY = -1
  1277. };
  1278.  
  1279. // id for a separator line in the menu (invalid for normal item)
  1280. enum
  1281. {
  1282.     wxID_SEPARATOR = -1
  1283. };
  1284.  
  1285. // Standard menu IDs
  1286. enum
  1287. {
  1288.     wxID_LOWEST = 4999,
  1289.  
  1290.     wxID_OPEN,
  1291.     wxID_CLOSE,
  1292.     wxID_NEW,
  1293.     wxID_SAVE,
  1294.     wxID_SAVEAS,
  1295.     wxID_REVERT,
  1296.     wxID_EXIT,
  1297.     wxID_UNDO,
  1298.     wxID_REDO,
  1299.     wxID_HELP,
  1300.     wxID_PRINT,
  1301.     wxID_PRINT_SETUP,
  1302.     wxID_PREVIEW,
  1303.     wxID_ABOUT,
  1304.     wxID_HELP_CONTENTS,
  1305.     wxID_HELP_COMMANDS,
  1306.     wxID_HELP_PROCEDURES,
  1307.     wxID_HELP_CONTEXT,
  1308.     wxID_CLOSE_ALL,
  1309.  
  1310.     wxID_CUT = 5030,
  1311.     wxID_COPY,
  1312.     wxID_PASTE,
  1313.     wxID_CLEAR,
  1314.     wxID_FIND,
  1315.     wxID_DUPLICATE,
  1316.     wxID_SELECTALL,
  1317.  
  1318.     wxID_FILE1 = 5050,
  1319.     wxID_FILE2,
  1320.     wxID_FILE3,
  1321.     wxID_FILE4,
  1322.     wxID_FILE5,
  1323.     wxID_FILE6,
  1324.     wxID_FILE7,
  1325.     wxID_FILE8,
  1326.     wxID_FILE9,
  1327.  
  1328.     // Standard button IDs
  1329.     wxID_OK = 5100,
  1330.     wxID_CANCEL,
  1331.     wxID_APPLY,
  1332.     wxID_YES,
  1333.     wxID_NO,
  1334.     wxID_STATIC,
  1335.     wxID_FORWARD,
  1336.     wxID_BACKWARD,
  1337.     wxID_DEFAULT,
  1338.     wxID_MORE,
  1339.     wxID_SETUP,
  1340.     wxID_RESET,
  1341.     wxID_CONTEXT_HELP,
  1342.     wxID_YESTOALL,
  1343.     wxID_NOTOALL,
  1344.     wxID_ABORT,
  1345.     wxID_RETRY,
  1346.     wxID_IGNORE,
  1347.  
  1348.     // System menu IDs (used by wxUniv):
  1349.     wxID_SYSTEM_MENU = 5200,
  1350.     wxID_CLOSE_FRAME,
  1351.     wxID_MOVE_FRAME,
  1352.     wxID_RESIZE_FRAME,
  1353.     wxID_MAXIMIZE_FRAME,
  1354.     wxID_ICONIZE_FRAME,
  1355.     wxID_RESTORE_FRAME,
  1356.  
  1357.     // IDs used by generic file dialog (13 consecutive starting from this value)
  1358.     wxID_FILEDLGG = 5900,
  1359.  
  1360.     wxID_HIGHEST = 5999
  1361. };
  1362.  
  1363. // ----------------------------------------------------------------------------
  1364. // other constants
  1365. // ----------------------------------------------------------------------------
  1366.  
  1367. // menu and toolbar item kinds
  1368. enum wxItemKind
  1369. {
  1370.     wxITEM_SEPARATOR = -1,
  1371.     wxITEM_NORMAL,
  1372.     wxITEM_CHECK,
  1373.     wxITEM_RADIO,
  1374.     wxITEM_MAX
  1375. };
  1376.  
  1377. // hit test results
  1378. enum wxHitTest
  1379. {
  1380.     wxHT_NOWHERE,
  1381.  
  1382.     // scrollbar
  1383.     wxHT_SCROLLBAR_FIRST = wxHT_NOWHERE,
  1384.     wxHT_SCROLLBAR_ARROW_LINE_1,    // left or upper arrow to scroll by line
  1385.     wxHT_SCROLLBAR_ARROW_LINE_2,    // right or down
  1386.     wxHT_SCROLLBAR_ARROW_PAGE_1,    // left or upper arrow to scroll by page
  1387.     wxHT_SCROLLBAR_ARROW_PAGE_2,    // right or down
  1388.     wxHT_SCROLLBAR_THUMB,           // on the thumb
  1389.     wxHT_SCROLLBAR_BAR_1,           // bar to the left/above the thumb
  1390.     wxHT_SCROLLBAR_BAR_2,           // bar to the right/below the thumb
  1391.     wxHT_SCROLLBAR_LAST,
  1392.  
  1393.     // window
  1394.     wxHT_WINDOW_OUTSIDE,            // not in this window at all
  1395.     wxHT_WINDOW_INSIDE,             // in the client area
  1396.     wxHT_WINDOW_VERT_SCROLLBAR,     // on the vertical scrollbar
  1397.     wxHT_WINDOW_HORZ_SCROLLBAR,     // on the horizontal scrollbar
  1398.     wxHT_WINDOW_CORNER,             // on the corner between 2 scrollbars
  1399.  
  1400.     wxHT_MAX
  1401. };
  1402.  
  1403. // ----------------------------------------------------------------------------
  1404. // Possible SetSize flags
  1405. // ----------------------------------------------------------------------------
  1406.  
  1407. // Use internally-calculated width if -1
  1408. #define wxSIZE_AUTO_WIDTH       0x0001
  1409. // Use internally-calculated height if -1
  1410. #define wxSIZE_AUTO_HEIGHT      0x0002
  1411. // Use internally-calculated width and height if each is -1
  1412. #define wxSIZE_AUTO             (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT)
  1413. // Ignore missing (-1) dimensions (use existing).
  1414. // For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code.
  1415. #define wxSIZE_USE_EXISTING     0x0000
  1416. // Allow -1 as a valid position
  1417. #define wxSIZE_ALLOW_MINUS_ONE  0x0004
  1418. // Don't do parent client adjustments (for implementation only)
  1419. #define wxSIZE_NO_ADJUSTMENTS   0x0008
  1420.  
  1421. // ----------------------------------------------------------------------------
  1422. // GDI descriptions
  1423. // ----------------------------------------------------------------------------
  1424.  
  1425. enum
  1426. {
  1427.     // Text font families
  1428.     wxDEFAULT    = 70,
  1429.     wxDECORATIVE,
  1430.     wxROMAN,
  1431.     wxSCRIPT,
  1432.     wxSWISS,
  1433.     wxMODERN,
  1434.     wxTELETYPE,  /* @@@@ */
  1435.  
  1436.     // Proportional or Fixed width fonts (not yet used)
  1437.     wxVARIABLE   = 80,
  1438.     wxFIXED,
  1439.  
  1440.     wxNORMAL     = 90,
  1441.     wxLIGHT,
  1442.     wxBOLD,
  1443.     // Also wxNORMAL for normal (non-italic text)
  1444.     wxITALIC,
  1445.     wxSLANT,
  1446.  
  1447.     // Pen styles
  1448.     wxSOLID      =   100,
  1449.     wxDOT,
  1450.     wxLONG_DASH,
  1451.     wxSHORT_DASH,
  1452.     wxDOT_DASH,
  1453.     wxUSER_DASH,
  1454.  
  1455.     wxTRANSPARENT,
  1456.  
  1457.     // Brush & Pen Stippling. Note that a stippled pen cannot be dashed!!
  1458.     // Note also that stippling a Pen IS meaningfull, because a Line is
  1459.     wxSTIPPLE_MASK_OPAQUE, //mask is used for blitting monochrome using text fore and back ground colors
  1460.     wxSTIPPLE_MASK,        //mask is used for masking areas in the stipple bitmap (TO DO)
  1461.     // drawn with a Pen, and without any Brush -- and it can be stippled.
  1462.     wxSTIPPLE =          110,
  1463.     wxBDIAGONAL_HATCH,
  1464.     wxCROSSDIAG_HATCH,
  1465.     wxFDIAGONAL_HATCH,
  1466.     wxCROSS_HATCH,
  1467.     wxHORIZONTAL_HATCH,
  1468.     wxVERTICAL_HATCH,
  1469.  
  1470.     wxJOIN_BEVEL =     120,
  1471.     wxJOIN_MITER,
  1472.     wxJOIN_ROUND,
  1473.  
  1474.     wxCAP_ROUND =      130,
  1475.     wxCAP_PROJECTING,
  1476.     wxCAP_BUTT
  1477. };
  1478.  
  1479. // VZ: why doesn't it start with "wx"? FIXME
  1480. #define IS_HATCH(s)    ((s)>=wxBDIAGONAL_HATCH && (s)<=wxVERTICAL_HATCH)
  1481.  
  1482. // Logical ops
  1483. typedef enum
  1484. {
  1485.   wxCLEAR,        wxROP_BLACK = wxCLEAR,             wxBLIT_BLACKNESS = wxCLEAR,        // 0
  1486.   wxXOR,          wxROP_XORPEN = wxXOR,              wxBLIT_SRCINVERT = wxXOR,          // src XOR dst
  1487.   wxINVERT,       wxROP_NOT = wxINVERT,              wxBLIT_DSTINVERT = wxINVERT,       // NOT dst
  1488.   wxOR_REVERSE,   wxROP_MERGEPENNOT = wxOR_REVERSE,  wxBLIT_00DD0228 = wxOR_REVERSE,    // src OR (NOT dst)
  1489.   wxAND_REVERSE,  wxROP_MASKPENNOT = wxAND_REVERSE,  wxBLIT_SRCERASE = wxAND_REVERSE,   // src AND (NOT dst)
  1490.   wxCOPY,         wxROP_COPYPEN = wxCOPY,            wxBLIT_SRCCOPY = wxCOPY,           // src
  1491.   wxAND,          wxROP_MASKPEN = wxAND,             wxBLIT_SRCAND = wxAND,             // src AND dst
  1492.   wxAND_INVERT,   wxROP_MASKNOTPEN = wxAND_INVERT,   wxBLIT_00220326 = wxAND_INVERT,    // (NOT src) AND dst
  1493.   wxNO_OP,        wxROP_NOP = wxNO_OP,               wxBLIT_00AA0029 = wxNO_OP,         // dst
  1494.   wxNOR,          wxROP_NOTMERGEPEN = wxNOR,         wxBLIT_NOTSRCERASE = wxNOR,        // (NOT src) AND (NOT dst)
  1495.   wxEQUIV,        wxROP_NOTXORPEN = wxEQUIV,         wxBLIT_00990066 = wxEQUIV,         // (NOT src) XOR dst
  1496.   wxSRC_INVERT,   wxROP_NOTCOPYPEN = wxSRC_INVERT,   wxBLIT_NOTSCRCOPY = wxSRC_INVERT,  // (NOT src)
  1497.   wxOR_INVERT,    wxROP_MERGENOTPEN = wxOR_INVERT,   wxBLIT_MERGEPAINT = wxOR_INVERT,   // (NOT src) OR dst
  1498.   wxNAND,         wxROP_NOTMASKPEN = wxNAND,         wxBLIT_007700E6 = wxNAND,          // (NOT src) OR (NOT dst)
  1499.   wxOR,           wxROP_MERGEPEN = wxOR,             wxBLIT_SRCPAINT = wxOR,            // src OR dst
  1500.   wxSET,          wxROP_WHITE = wxSET,               wxBLIT_WHITENESS = wxSET           // 1
  1501. } form_ops_t;
  1502.  
  1503. // Flood styles
  1504. enum
  1505. {
  1506.     wxFLOOD_SURFACE = 1,
  1507.     wxFLOOD_BORDER
  1508. };
  1509.  
  1510. // Polygon filling mode
  1511. enum
  1512. {
  1513.     wxODDEVEN_RULE = 1,
  1514.     wxWINDING_RULE
  1515. };
  1516.  
  1517. // ToolPanel in wxFrame (VZ: unused?)
  1518. enum
  1519. {
  1520.     wxTOOL_TOP = 1,
  1521.     wxTOOL_BOTTOM,
  1522.     wxTOOL_LEFT,
  1523.     wxTOOL_RIGHT
  1524. };
  1525.  
  1526. // the values of the format constants should be the same as correspondign
  1527. // CF_XXX constants in Windows API
  1528. enum wxDataFormatId
  1529. {
  1530.     wxDF_INVALID =          0,
  1531.     wxDF_TEXT =             1,  /* CF_TEXT */
  1532.     wxDF_BITMAP =           2,  /* CF_BITMAP */
  1533.     wxDF_METAFILE =         3,  /* CF_METAFILEPICT */
  1534.     wxDF_SYLK =             4,
  1535.     wxDF_DIF =              5,
  1536.     wxDF_TIFF =             6,
  1537.     wxDF_OEMTEXT =          7,  /* CF_OEMTEXT */
  1538.     wxDF_DIB =              8,  /* CF_DIB */
  1539.     wxDF_PALETTE =          9,
  1540.     wxDF_PENDATA =          10,
  1541.     wxDF_RIFF =             11,
  1542.     wxDF_WAVE =             12,
  1543.     wxDF_UNICODETEXT =      13,
  1544.     wxDF_ENHMETAFILE =      14,
  1545.     wxDF_FILENAME =         15, /* CF_HDROP */
  1546.     wxDF_LOCALE =           16,
  1547.     wxDF_PRIVATE =          20,
  1548.     wxDF_HTML =             30, /* Note: does not correspond to CF_ constant */
  1549.     wxDF_MAX
  1550. };
  1551.  
  1552. // Virtual keycodes
  1553. enum wxKeyCode
  1554. {
  1555.     WXK_BACK    =    8,
  1556.     WXK_TAB     =    9,
  1557.     WXK_RETURN  =    13,
  1558.     WXK_ESCAPE  =    27,
  1559.     WXK_SPACE   =    32,
  1560.     WXK_DELETE  =    127,
  1561.  
  1562.     WXK_START   = 300,
  1563.     WXK_LBUTTON,
  1564.     WXK_RBUTTON,
  1565.     WXK_CANCEL,
  1566.     WXK_MBUTTON,
  1567.     WXK_CLEAR,
  1568.     WXK_SHIFT,
  1569.     WXK_ALT,
  1570.     WXK_CONTROL,
  1571.     WXK_MENU,
  1572.     WXK_PAUSE,
  1573.     WXK_CAPITAL,
  1574.     WXK_PRIOR,  // Page up
  1575.     WXK_NEXT,   // Page down
  1576.     WXK_END,
  1577.     WXK_HOME,
  1578.     WXK_LEFT,
  1579.     WXK_UP,
  1580.     WXK_RIGHT,
  1581.     WXK_DOWN,
  1582.     WXK_SELECT,
  1583.     WXK_PRINT,
  1584.     WXK_EXECUTE,
  1585.     WXK_SNAPSHOT,
  1586.     WXK_INSERT,
  1587.     WXK_HELP,
  1588.     WXK_NUMPAD0,
  1589.     WXK_NUMPAD1,
  1590.     WXK_NUMPAD2,
  1591.     WXK_NUMPAD3,
  1592.     WXK_NUMPAD4,
  1593.     WXK_NUMPAD5,
  1594.     WXK_NUMPAD6,
  1595.     WXK_NUMPAD7,
  1596.     WXK_NUMPAD8,
  1597.     WXK_NUMPAD9,
  1598.     WXK_MULTIPLY,
  1599.     WXK_ADD,
  1600.     WXK_SEPARATOR,
  1601.     WXK_SUBTRACT,
  1602.     WXK_DECIMAL,
  1603.     WXK_DIVIDE,
  1604.     WXK_F1,
  1605.     WXK_F2,
  1606.     WXK_F3,
  1607.     WXK_F4,
  1608.     WXK_F5,
  1609.     WXK_F6,
  1610.     WXK_F7,
  1611.     WXK_F8,
  1612.     WXK_F9,
  1613.     WXK_F10,
  1614.     WXK_F11,
  1615.     WXK_F12,
  1616.     WXK_F13,
  1617.     WXK_F14,
  1618.     WXK_F15,
  1619.     WXK_F16,
  1620.     WXK_F17,
  1621.     WXK_F18,
  1622.     WXK_F19,
  1623.     WXK_F20,
  1624.     WXK_F21,
  1625.     WXK_F22,
  1626.     WXK_F23,
  1627.     WXK_F24,
  1628.     WXK_NUMLOCK,
  1629.     WXK_SCROLL,
  1630.     WXK_PAGEUP,
  1631.     WXK_PAGEDOWN,
  1632.  
  1633.     WXK_NUMPAD_SPACE,
  1634.     WXK_NUMPAD_TAB,
  1635.     WXK_NUMPAD_ENTER,
  1636.     WXK_NUMPAD_F1,
  1637.     WXK_NUMPAD_F2,
  1638.     WXK_NUMPAD_F3,
  1639.     WXK_NUMPAD_F4,
  1640.     WXK_NUMPAD_HOME,
  1641.     WXK_NUMPAD_LEFT,
  1642.     WXK_NUMPAD_UP,
  1643.     WXK_NUMPAD_RIGHT,
  1644.     WXK_NUMPAD_DOWN,
  1645.     WXK_NUMPAD_PRIOR,
  1646.     WXK_NUMPAD_PAGEUP,
  1647.     WXK_NUMPAD_NEXT,
  1648.     WXK_NUMPAD_PAGEDOWN,
  1649.     WXK_NUMPAD_END,
  1650.     WXK_NUMPAD_BEGIN,
  1651.     WXK_NUMPAD_INSERT,
  1652.     WXK_NUMPAD_DELETE,
  1653.     WXK_NUMPAD_EQUAL,
  1654.     WXK_NUMPAD_MULTIPLY,
  1655.     WXK_NUMPAD_ADD,
  1656.     WXK_NUMPAD_SEPARATOR,
  1657.     WXK_NUMPAD_SUBTRACT,
  1658.     WXK_NUMPAD_DECIMAL,
  1659.     WXK_NUMPAD_DIVIDE
  1660. };
  1661.  
  1662. // Mapping modes (same values as used by Windows, don't change)
  1663. enum
  1664. {
  1665.     wxMM_TEXT = 1,
  1666.     wxMM_LOMETRIC,
  1667.     wxMM_HIMETRIC,
  1668.     wxMM_LOENGLISH,
  1669.     wxMM_HIENGLISH,
  1670.     wxMM_TWIPS,
  1671.     wxMM_ISOTROPIC,
  1672.     wxMM_ANISOTROPIC,
  1673.     wxMM_POINTS,
  1674.     wxMM_METRIC
  1675. };
  1676.  
  1677. /* Shortcut for easier dialog-unit-to-pixel conversion */
  1678. #define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt)
  1679.  
  1680. /* Paper types */
  1681. typedef enum
  1682. {
  1683.     wxPAPER_NONE,               // Use specific dimensions
  1684.     wxPAPER_LETTER,             // Letter, 8 1/2 by 11 inches
  1685.     wxPAPER_LEGAL,              // Legal, 8 1/2 by 14 inches
  1686.     wxPAPER_A4,                 // A4 Sheet, 210 by 297 millimeters
  1687.     wxPAPER_CSHEET,             // C Sheet, 17 by 22 inches
  1688.     wxPAPER_DSHEET,             // D Sheet, 22 by 34 inches
  1689.     wxPAPER_ESHEET,             // E Sheet, 34 by 44 inches
  1690.     wxPAPER_LETTERSMALL,        // Letter Small, 8 1/2 by 11 inches
  1691.     wxPAPER_TABLOID,            // Tabloid, 11 by 17 inches
  1692.     wxPAPER_LEDGER,             // Ledger, 17 by 11 inches
  1693.     wxPAPER_STATEMENT,          // Statement, 5 1/2 by 8 1/2 inches
  1694.     wxPAPER_EXECUTIVE,          // Executive, 7 1/4 by 10 1/2 inches
  1695.     wxPAPER_A3,                 // A3 sheet, 297 by 420 millimeters
  1696.     wxPAPER_A4SMALL,            // A4 small sheet, 210 by 297 millimeters
  1697.     wxPAPER_A5,                 // A5 sheet, 148 by 210 millimeters
  1698.     wxPAPER_B4,                 // B4 sheet, 250 by 354 millimeters
  1699.     wxPAPER_B5,                 // B5 sheet, 182-by-257-millimeter paper
  1700.     wxPAPER_FOLIO,              // Folio, 8-1/2-by-13-inch paper
  1701.     wxPAPER_QUARTO,             // Quarto, 215-by-275-millimeter paper
  1702.     wxPAPER_10X14,              // 10-by-14-inch sheet
  1703.     wxPAPER_11X17,              // 11-by-17-inch sheet
  1704.     wxPAPER_NOTE,               // Note, 8 1/2 by 11 inches
  1705.     wxPAPER_ENV_9,              // #9 Envelope, 3 7/8 by 8 7/8 inches
  1706.     wxPAPER_ENV_10,             // #10 Envelope, 4 1/8 by 9 1/2 inches
  1707.     wxPAPER_ENV_11,             // #11 Envelope, 4 1/2 by 10 3/8 inches
  1708.     wxPAPER_ENV_12,             // #12 Envelope, 4 3/4 by 11 inches
  1709.     wxPAPER_ENV_14,             // #14 Envelope, 5 by 11 1/2 inches
  1710.     wxPAPER_ENV_DL,             // DL Envelope, 110 by 220 millimeters
  1711.     wxPAPER_ENV_C5,             // C5 Envelope, 162 by 229 millimeters
  1712.     wxPAPER_ENV_C3,             // C3 Envelope, 324 by 458 millimeters
  1713.     wxPAPER_ENV_C4,             // C4 Envelope, 229 by 324 millimeters
  1714.     wxPAPER_ENV_C6,             // C6 Envelope, 114 by 162 millimeters
  1715.     wxPAPER_ENV_C65,            // C65 Envelope, 114 by 229 millimeters
  1716.     wxPAPER_ENV_B4,             // B4 Envelope, 250 by 353 millimeters
  1717.     wxPAPER_ENV_B5,             // B5 Envelope, 176 by 250 millimeters
  1718.     wxPAPER_ENV_B6,             // B6 Envelope, 176 by 125 millimeters
  1719.     wxPAPER_ENV_ITALY,          // Italy Envelope, 110 by 230 millimeters
  1720.     wxPAPER_ENV_MONARCH,        // Monarch Envelope, 3 7/8 by 7 1/2 inches
  1721.     wxPAPER_ENV_PERSONAL,       // 6 3/4 Envelope, 3 5/8 by 6 1/2 inches
  1722.     wxPAPER_FANFOLD_US,         // US Std Fanfold, 14 7/8 by 11 inches
  1723.     wxPAPER_FANFOLD_STD_GERMAN, // German Std Fanfold, 8 1/2 by 12 inches
  1724.     wxPAPER_FANFOLD_LGL_GERMAN, // German Legal Fanfold, 8 1/2 by 13 inches
  1725.  
  1726.     wxPAPER_ISO_B4,             // B4 (ISO) 250 x 353 mm
  1727.     wxPAPER_JAPANESE_POSTCARD,  // Japanese Postcard 100 x 148 mm
  1728.     wxPAPER_9X11,               // 9 x 11 in
  1729.     wxPAPER_10X11,              // 10 x 11 in
  1730.     wxPAPER_15X11,              // 15 x 11 in
  1731.     wxPAPER_ENV_INVITE,         // Envelope Invite 220 x 220 mm
  1732.     wxPAPER_LETTER_EXTRA,       // Letter Extra 9 \275 x 12 in
  1733.     wxPAPER_LEGAL_EXTRA,        // Legal Extra 9 \275 x 15 in
  1734.     wxPAPER_TABLOID_EXTRA,      // Tabloid Extra 11.69 x 18 in
  1735.     wxPAPER_A4_EXTRA,           // A4 Extra 9.27 x 12.69 in
  1736.     wxPAPER_LETTER_TRANSVERSE,  // Letter Transverse 8 \275 x 11 in
  1737.     wxPAPER_A4_TRANSVERSE,      // A4 Transverse 210 x 297 mm
  1738.     wxPAPER_LETTER_EXTRA_TRANSVERSE, // Letter Extra Transverse 9\275 x 12 in
  1739.     wxPAPER_A_PLUS,             // SuperA/SuperA/A4 227 x 356 mm
  1740.     wxPAPER_B_PLUS,             // SuperB/SuperB/A3 305 x 487 mm
  1741.     wxPAPER_LETTER_PLUS,        // Letter Plus 8.5 x 12.69 in
  1742.     wxPAPER_A4_PLUS,            // A4 Plus 210 x 330 mm
  1743.     wxPAPER_A5_TRANSVERSE,      // A5 Transverse 148 x 210 mm
  1744.     wxPAPER_B5_TRANSVERSE,      // B5 (JIS) Transverse 182 x 257 mm
  1745.     wxPAPER_A3_EXTRA,           // A3 Extra 322 x 445 mm
  1746.     wxPAPER_A5_EXTRA,           // A5 Extra 174 x 235 mm
  1747.     wxPAPER_B5_EXTRA,           // B5 (ISO) Extra 201 x 276 mm
  1748.     wxPAPER_A2,                 // A2 420 x 594 mm
  1749.     wxPAPER_A3_TRANSVERSE,      // A3 Transverse 297 x 420 mm
  1750.     wxPAPER_A3_EXTRA_TRANSVERSE // A3 Extra Transverse 322 x 445 mm
  1751.  
  1752. } wxPaperSize;
  1753.  
  1754. /* Printing orientation */
  1755. #ifndef wxPORTRAIT
  1756. #define wxPORTRAIT      1
  1757. #define wxLANDSCAPE     2
  1758. #endif
  1759.  
  1760. /* Duplex printing modes
  1761.  */
  1762.  
  1763. enum wxDuplexMode
  1764. {
  1765.     wxDUPLEX_SIMPLEX, // Non-duplex
  1766.     wxDUPLEX_HORIZONTAL,
  1767.     wxDUPLEX_VERTICAL
  1768. };
  1769.  
  1770. /* Print quality.
  1771.  */
  1772.  
  1773. #define wxPRINT_QUALITY_HIGH    -1
  1774. #define wxPRINT_QUALITY_MEDIUM  -2
  1775. #define wxPRINT_QUALITY_LOW     -3
  1776. #define wxPRINT_QUALITY_DRAFT   -4
  1777.  
  1778. typedef int wxPrintQuality;
  1779.  
  1780. /* Print mode (currently PostScript only)
  1781.  */
  1782.  
  1783. enum wxPrintMode
  1784. {
  1785.     wxPRINT_MODE_NONE =    0,
  1786.     wxPRINT_MODE_PREVIEW = 1,   // Preview in external application
  1787.     wxPRINT_MODE_FILE =    2,   // Print to file
  1788.     wxPRINT_MODE_PRINTER = 3    // Send to printer
  1789. };
  1790.  
  1791. // ----------------------------------------------------------------------------
  1792. // miscellaneous
  1793. // ----------------------------------------------------------------------------
  1794.  
  1795. // define this macro if font handling is done using the X font names
  1796. #if (defined(__WXGTK__) && !defined(__WXGTK20__)) || defined(__X__)
  1797.     #define _WX_X_FONTLIKE
  1798. #endif
  1799.  
  1800. // macro to specify "All Files" on different platforms
  1801. #if defined(__WXMSW__) || defined(__WXPM__)
  1802. #   define wxALL_FILES_PATTERN   wxT("*.*")
  1803. #   define wxALL_FILES           gettext_noop("All files (*.*)|*.*")
  1804. #else
  1805. #   define wxALL_FILES_PATTERN   wxT("*")
  1806. #   define wxALL_FILES           gettext_noop("All files (*)|*")
  1807. #endif
  1808.  
  1809. // ---------------------------------------------------------------------------
  1810. // macros that enable wxWindows apps to be compiled in absence of the
  1811. // sytem headers, although some platform specific types are used in the
  1812. // platform specific (implementation) parts of the headers
  1813. // ---------------------------------------------------------------------------
  1814.  
  1815. #ifdef __WXMAC__
  1816.  
  1817. typedef unsigned char WXCOLORREF[6];
  1818. typedef void*       WXHBITMAP;
  1819. typedef void*       WXHMETAFILE ;
  1820. typedef void*       WXHICON ;
  1821. typedef void*       WXHCURSOR ;
  1822. typedef void*       WXHRGN ;
  1823. typedef void*       WXRECTPTR ;
  1824. typedef void*       WXPOINTPTR ;
  1825. typedef void*       WXHWND ;
  1826. typedef void*       WXEVENTREF ;
  1827. typedef void*       WXAPPLEEVENTREF ;
  1828. typedef void*       WXHDC ;
  1829. typedef void*       WXHMENU ;
  1830. typedef unsigned int    WXUINT;
  1831. typedef unsigned long   WXDWORD;
  1832. typedef unsigned short  WXWORD;
  1833.  
  1834. typedef void*       WXWidget ;
  1835. typedef void*       WXWindow ;
  1836. typedef void*       WXDisplay ;
  1837. /*
  1838. typedef WindowPtr       WXHWND;
  1839. typedef Handle          WXHANDLE;
  1840. typedef CIconHandle     WXHICON;
  1841. //typedef unsigned long   WXHFONT;
  1842. typedef MenuHandle      WXHMENU;
  1843. //typedef unsigned long   WXHPEN;
  1844. //typedef unsigned long   WXHBRUSH;
  1845. //typedef unsigned long   WXHPALETTE;
  1846. typedef CursHandle      WXHCURSOR;
  1847. typedef RgnHandle       WXHRGN;
  1848. //typedef unsigned long   WXHACCEL;
  1849. //typedef unsigned long   WXHINSTANCE;
  1850. //typedef unsigned long   WXHIMAGELIST;
  1851. //typedef unsigned long   WXHGLOBAL;
  1852. typedef GrafPtr         WXHDC;
  1853. //typedef unsigned int    WXWPARAM;
  1854. //typedef long            WXLPARAM;
  1855. //typedef void *          WXRGNDATA;
  1856. //typedef void *          WXMSG;
  1857. //typedef unsigned long   WXHCONV;
  1858. //typedef unsigned long   WXHKEY;
  1859. //typedef void *          WXDRAWITEMSTRUCT;
  1860. //typedef void *          WXMEASUREITEMSTRUCT;
  1861. //typedef void *          WXLPCREATESTRUCT;
  1862. typedef int (*WXFARPROC)();
  1863.  
  1864. typedef WindowPtr       WXWindow;
  1865. typedef ControlHandle   WXWidget;
  1866. */
  1867. #endif
  1868.  
  1869. #if defined(__WXMSW__) || defined(__WXPM__)
  1870.  
  1871. // the keywords needed for WinMain() declaration
  1872. #ifdef __WIN16__
  1873. #  ifdef __VISUALC__
  1874. #    define WXFAR __far
  1875. #  else
  1876. #    define WXFAR _far
  1877. #  endif
  1878. #else  // Win32
  1879. #  ifndef WXFAR
  1880. #    define WXFAR
  1881. #  endif
  1882. #endif // Win16/32
  1883.  
  1884. // Stand-ins for Windows types or OS/2, to avoid #including all of windows.h or os2.h
  1885. typedef unsigned long   WXHWND;
  1886. typedef unsigned long   WXHANDLE;
  1887. typedef unsigned long   WXHICON;
  1888. typedef unsigned long   WXHFONT;
  1889. typedef unsigned long   WXHMENU;
  1890. typedef unsigned long   WXHPEN;
  1891. typedef unsigned long   WXHBRUSH;
  1892. typedef unsigned long   WXHPALETTE;
  1893. typedef unsigned long   WXHCURSOR;
  1894. typedef unsigned long   WXHRGN;
  1895. typedef unsigned long   WXHACCEL;
  1896. typedef void WXFAR  *   WXHINSTANCE;
  1897. typedef unsigned long   WXHBITMAP;
  1898. typedef unsigned long   WXHIMAGELIST;
  1899. typedef unsigned long   WXHGLOBAL;
  1900. typedef unsigned long   WXHDC;
  1901. typedef unsigned int    WXUINT;
  1902. typedef unsigned long   WXDWORD;
  1903. typedef unsigned short  WXWORD;
  1904.  
  1905. typedef unsigned long   WXCOLORREF;
  1906. typedef void *          WXRGNDATA;
  1907. typedef void *          WXMSG;
  1908. typedef unsigned long   WXHCONV;
  1909. typedef unsigned long   WXHKEY;
  1910. typedef unsigned long   WXHTREEITEM;
  1911.  
  1912. typedef void *          WXDRAWITEMSTRUCT;
  1913. typedef void *          WXMEASUREITEMSTRUCT;
  1914. typedef void *          WXLPCREATESTRUCT;
  1915.  
  1916. typedef WXHWND          WXWidget;
  1917.  
  1918. #endif // MSW or OS2
  1919.  
  1920.  
  1921. #ifdef __WXMSW__
  1922. typedef unsigned int    WXWPARAM;
  1923. typedef long            WXLPARAM;
  1924.  
  1925. #if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXWINE__) || defined(__WXMICROWIN__)
  1926. typedef int             (*WXFARPROC)();
  1927. #else
  1928. typedef int             (__stdcall *WXFARPROC)();
  1929. #endif
  1930. #endif // __WXMSW__
  1931.  
  1932.  
  1933. #if defined(__WXPM__)
  1934. #ifdef __EMX__
  1935. /* Need a well-known type for WXFARPROC
  1936.    below. MPARAM is typedef'ed too late. */
  1937. #define WXWPARAM        void *
  1938. #define WXLPARAM        void *
  1939. #else
  1940. #define WXWPARAM        MPARAM
  1941. #define WXLPARAM        MPARAM
  1942. #endif
  1943. #define RECT            RECTL
  1944. #define LOGFONT         FATTRS
  1945. #define LOWORD          SHORT1FROMMP
  1946. #define HIWORD          SHORT2FROMMP
  1947.  
  1948. typedef unsigned long   WXMPARAM;
  1949. typedef unsigned long   WXMSGID;
  1950. typedef void*           WXRESULT;
  1951. //typedef int             (*WXFARPROC)();
  1952. // some windows handles not defined by PM
  1953. typedef unsigned long   HANDLE;
  1954. typedef unsigned long   HICON;
  1955. typedef unsigned long   HFONT;
  1956. typedef unsigned long   HMENU;
  1957. typedef unsigned long   HPEN;
  1958. typedef unsigned long   HBRUSH;
  1959. typedef unsigned long   HPALETTE;
  1960. typedef unsigned long   HCURSOR;
  1961. typedef unsigned long   HINSTANCE;
  1962. typedef unsigned long   HIMAGELIST;
  1963. typedef unsigned long   HGLOBAL;
  1964. typedef unsigned long   DWORD;
  1965. typedef unsigned short  WORD;
  1966.  
  1967. // WIN32 graphics types for OS/2 GPI
  1968.  
  1969. // RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def
  1970. // WARNING: The OS/2 headers typedef BYTE simply as 'char'; if the default is signed, all
  1971. // hell will break loose!
  1972. //#define OS2RGB(r,g,b) ((DWORD ((BYTE) (b) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(r)) << 16)))
  1973. #define OS2RGB(r,g,b) ((DWORD)((unsigned char)(b) | ((unsigned char)(g) << 8)) | ((unsigned char)(r) << 16))
  1974.  
  1975. typedef unsigned long COLORREF;
  1976. #define GetBValue(rgb) ((BYTE)((rgb) >> 16))
  1977. #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
  1978. #define GetRValue(rgb) ((BYTE)(rgb))
  1979. #define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
  1980. #define PALETTERGB(r,g,b) (0x02000000 | OS2RGB(r,g,b))
  1981. // OS2's RGB/RGB2 is backwards from this
  1982. typedef struct tagPALETTEENTRY
  1983. {
  1984.     char bRed;
  1985.     char bGreen;
  1986.     char bBlue;
  1987.     char bFlags;
  1988. } PALETTEENTRY;
  1989. typedef struct tagLOGPALETTE
  1990. {
  1991.     WORD palVersion;
  1992.     WORD palNumentries;
  1993.     WORD PALETTEENTRY[1];
  1994. } LOGPALETTE;
  1995.  
  1996. #if (defined(__VISAGECPP__) && (__IBMCPP__ < 400)) || defined (__WATCOMC__)
  1997.     // VA 3.0 for some reason needs base data types when typedefing a proc proto???
  1998. typedef void* (_System *WXFARPROC)(unsigned long, unsigned long, void*, void*);
  1999. #else
  2000. #ifdef __EMX__
  2001. #define _System
  2002. #endif
  2003. typedef WXRESULT (_System *WXFARPROC)(WXHWND, WXMSGID, WXWPARAM, WXLPARAM);
  2004. #endif
  2005.  
  2006. #endif //__WXPM__
  2007.  
  2008.  
  2009. #if defined(__WXMOTIF__) || defined(__WXX11__)
  2010. /* Stand-ins for X/Xt/Motif types */
  2011. typedef void*           WXWindow;
  2012. typedef void*           WXWidget;
  2013. typedef void*           WXAppContext;
  2014. typedef void*           WXColormap;
  2015. typedef void*           WXColor;
  2016. typedef void            WXDisplay;
  2017. typedef void            WXEvent;
  2018. typedef void*           WXCursor;
  2019. typedef void*           WXPixmap;
  2020. typedef void*           WXFontStructPtr;
  2021. typedef void*           WXGC;
  2022. typedef void*           WXRegion;
  2023. typedef void*           WXFont;
  2024. typedef void*           WXImage;
  2025. typedef void*           WXFontList;
  2026.  
  2027. typedef unsigned long   Atom;  /* this might fail on a few architectures */
  2028.  
  2029. #endif // Motif
  2030.  
  2031. #ifdef __WXGTK__
  2032.  
  2033. /* Stand-ins for GLIB types */
  2034. typedef char           gchar;
  2035. typedef signed char    gint8;
  2036. typedef int            gint;
  2037. typedef unsigned       guint;
  2038. typedef unsigned long  gulong;
  2039. typedef void*          gpointer;
  2040. typedef struct _GSList GSList;
  2041.  
  2042. /* Stand-ins for GDK types */
  2043. typedef struct _GdkColor        GdkColor;
  2044. typedef struct _GdkColormap     GdkColormap;
  2045. typedef struct _GdkFont         GdkFont;
  2046. typedef struct _GdkGC           GdkGC;
  2047. typedef struct _GdkVisual       GdkVisual;
  2048.  
  2049. #ifdef __WXGTK20__
  2050. typedef struct _GdkAtom        *GdkAtom;
  2051. typedef struct _GdkDrawable     GdkWindow;
  2052. typedef struct _GdkDrawable     GdkBitmap;
  2053. typedef struct _GdkDrawable     GdkPixmap;
  2054. #else // GTK+ 1.2
  2055. typedef gulong                  GdkAtom;
  2056. typedef struct _GdkWindow       GdkWindow;
  2057. typedef struct _GdkWindow       GdkBitmap;
  2058. typedef struct _GdkWindow       GdkPixmap;
  2059. #endif // GTK+ 1.2/2.0
  2060.  
  2061. typedef struct _GdkCursor       GdkCursor;
  2062. typedef struct _GdkRegion       GdkRegion;
  2063. typedef struct _GdkDragContext  GdkDragContext;
  2064.  
  2065. #ifdef HAVE_XIM
  2066. typedef struct _GdkIC           GdkIC;
  2067. typedef struct _GdkICAttr       GdkICAttr;
  2068. #endif
  2069.  
  2070. /* Stand-ins for GTK types */
  2071. typedef struct _GtkWidget         GtkWidget;
  2072. typedef struct _GtkStyle          GtkStyle;
  2073. typedef struct _GtkAdjustment     GtkAdjustment;
  2074. typedef struct _GtkList           GtkList;
  2075. typedef struct _GtkToolbar        GtkToolbar;
  2076. typedef struct _GtkTooltips       GtkTooltips;
  2077. typedef struct _GtkNotebook       GtkNotebook;
  2078. typedef struct _GtkNotebookPage   GtkNotebookPage;
  2079. typedef struct _GtkAccelGroup     GtkAccelGroup;
  2080. typedef struct _GtkItemFactory    GtkItemFactory;
  2081. typedef struct _GtkSelectionData  GtkSelectionData;
  2082.  
  2083. typedef GtkWidget *WXWidget;
  2084.  
  2085. #ifndef __WXGTK20__
  2086. #define GTK_OBJECT_GET_CLASS(object) (GTK_OBJECT(object)->klass)
  2087. #define GTK_CLASS_TYPE(klass) ((klass)->type)
  2088. #endif
  2089.  
  2090. #ifdef __WXGTK20__
  2091. /* Input method thing */
  2092. typedef struct _GtkIMMulticontext    GtkIMMulticontext;
  2093. #endif // __WXGTK20__
  2094.  
  2095. #endif // __WXGTK__
  2096.  
  2097. #if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE)
  2098. #define wxUSE_PANGO 1
  2099. #else
  2100. #define wxUSE_PANGO 0
  2101. #endif
  2102.  
  2103. #if wxUSE_PANGO
  2104. /* Stand-ins for Pango types */
  2105. typedef struct _PangoContext         PangoContext;
  2106. typedef struct _PangoLayout          PangoLayout;
  2107. typedef struct _PangoFontDescription PangoFontDescription;
  2108. #endif
  2109.  
  2110. #ifdef __WXMGL__
  2111. typedef struct window_t *WXWidget;
  2112. #endif // MGL
  2113.  
  2114. // This is required because of clashing macros in windows.h, which may be
  2115. // included before or after wxWindows classes, and therefore must be
  2116. // disabled here before any significant wxWindows headers are included.
  2117. #ifdef __WXMSW__
  2118. #ifdef GetClassInfo
  2119. #undef GetClassInfo
  2120. #endif
  2121.  
  2122. #ifdef GetClassName
  2123. #undef GetClassName
  2124. #endif
  2125.  
  2126. #ifdef DrawText
  2127. #undef DrawText
  2128. #endif
  2129.  
  2130. #ifdef GetCharWidth
  2131. #undef GetCharWidth
  2132. #endif
  2133.  
  2134. #ifdef StartDoc
  2135. #undef StartDoc
  2136. #endif
  2137.  
  2138. #ifdef FindWindow
  2139. #undef FindWindow
  2140. #endif
  2141.  
  2142. #ifdef FindResource
  2143. #undef FindResource
  2144. #endif
  2145. #endif
  2146.   // __WXMSW__
  2147.  
  2148. // ---------------------------------------------------------------------------
  2149. // macro to define a class without copy ctor nor assignment operator
  2150. // ---------------------------------------------------------------------------
  2151.  
  2152. #define DECLARE_NO_COPY_CLASS(classname)        \
  2153.     private:                                    \
  2154.         classname(const classname&);            \
  2155.         classname& operator=(const classname&);
  2156.  
  2157. #endif
  2158.     // _WX_DEFS_H_
  2159.