1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     Declarations/definitions common to all wx source files 
   4 // Author:      Julian Smart and others 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  15 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) 
  16 #pragma interface "defs.h" 
  19 // ---------------------------------------------------------------------------- 
  20 // compiler and OS identification 
  21 // ---------------------------------------------------------------------------- 
  23 #include "wx/platform.h" 
  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(__WXCOCOA__) && \ 
  30       !defined(__X__) && !defined(__WXMGL__) && !defined(__WXX11__) && \ 
  33         #error "No Target! You should use wx-config program for compilation flags!" 
  35     #error "No Target! You should use supplied makefiles for compilation!" 
  40     #define __WXWINDOWS__ 1 
  44     // by default consider that this is a monolithic build 
  48 #if !wxUSE_GUI && !defined(__WXBASE__) 
  52 // include the feature test macros 
  53 #include "wx/features.h" 
  55 // suppress some Visual C++ warnings 
  57     // the only "real" warning here is 4244 but there arej ust too many of them 
  58     // in our code... one day someone should go and fix them but until then... 
  59 #   pragma warning(disable:4201)    // nonstandard extension used: nameless struct/union 
  60 #   pragma warning(disable:4244)    // conversion from double to float 
  61 #   pragma warning(disable:4710)    // function not inlined 
  62 #   pragma warning(disable:4097)    // typedef used as class 
  63 #   pragma warning(disable:4511)    // copy ctor couldn't be generated 
  64 #   pragma warning(disable:4512)    // operator=() couldn't be generated 
  66 #   pragma warning(disable:4135)    // conversion between different integral types 
  67 #   pragma warning(disable:4769)    // assignment of near pointer to long integer 
  68 // This one is really annoying, since it occurs for each cast to (HANDLE)... 
  69 #   pragma warning(disable:4305)    // truncation of long to near ptr 
  73 // suppress some Watcom C++ warnings 
  75 #   pragma warning 849 9            // Disable 'virtual function hidden' 
  76 #   pragma warning 549 9            // Disable 'operand contains compiler generated information' 
  79 // suppress some Salford C++ warnings 
  81 #   pragma suppress 353             // Possible nested comments 
  82 #   pragma suppress 593             // Define not used 
  83 #   pragma suppress 61              // enum has no name (doesn't suppress!) 
  84 #   pragma suppress 106             // unnamed, unused parameter 
  85 #   pragma suppress 571             // Virtual function hiding 
  86 #endif // __SALFORDC__ 
  88 // suppress some Borland C++ warnings 
  90 #   pragma warn -inl                // Functions containing reserved words and certain constructs are not expanded inline 
  91 #endif // __BORLANDC__ 
  93 // ---------------------------------------------------------------------------- 
  94 // wxWindows version and compatibility defines 
  95 // ---------------------------------------------------------------------------- 
  97 #include "wx/version.h" 
  99 // ============================================================================ 
 100 // non portable C++ features 
 101 // ============================================================================ 
 103 // ---------------------------------------------------------------------------- 
 104 // compiler defects workarounds 
 105 // ---------------------------------------------------------------------------- 
 107 #if defined(__VISUALC__) && !defined(WIN32) && !defined(__WXWINCE__) 
 108     // VC1.5 does not have LPTSTR type 
 110 #define LPCTSTR LPCSTR 
 111 #elif defined(__BORLANDC__) && !defined(__WIN32__) 
 116 #define LPCTSTR LPSTR 
 122    Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files, 
 123    so define it ourselves (newer versions do it for all files, though, and 
 124    don't allow it to be redefined) 
 126 #if defined(__DECCXX) && !defined(__VMS) && !defined(__cplusplus) 
 128 #endif /* __DECCXX */ 
 130 // Resolves linking problems under HP-UX when compiling with gcc/g++ 
 131 #if defined(__HPUX__) && defined(__GNUG__) 
 132 #define va_list __gnuc_va_list 
 135 // ---------------------------------------------------------------------------- 
 136 // check for native bool type and TRUE/FALSE constants 
 137 // ---------------------------------------------------------------------------- 
 139 // Add more tests here for Windows compilers that already define bool 
 140 // (under Unix, configure tests for this) 
 142     #if defined( __MWERKS__ ) 
 143         #if (__MWERKS__ >= 0x1000) && __option(bool) 
 146     #elif defined(__APPLE__) && defined(__APPLE_CC__) 
 147         // Apple bundled gcc supports bool 
 149     #elif defined(__VISUALC__) && (__VISUALC__ == 1020) 
 150         // in VC++ 4.2 the bool keyword is reserved (hence can't be typedefed) 
 151         // but not implemented, so we must #define it 
 152         #define bool unsigned int 
 153     #elif defined(__VISUALC__) && (__VISUALC__ == 1010) 
 154         // For VisualC++ 4.1, we need to define 
 155         // bool as something between 4.0 & 5.0... 
 156         typedef unsigned int wxbool
; 
 159     #elif defined(__VISUALC__) && (__VISUALC__ > 1020) 
 160         // VC++ supports bool since 4.2 
 162     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x500) 
 163         // Borland 5.0+ supports bool 
 165     #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100) 
 166         // Watcom 11+ supports bool 
 168     #elif defined(__DIGITALMARS__) 
 169         // DigitalMars supports bool 
 171     #elif defined(__GNUWIN32__) || defined(__MINGW32__) || defined(__CYGWIN__) 
 172         // Cygwin supports bool 
 174     #elif defined(__VISAGECPP__) 
 176             typedef unsigned long bool; 
 177             #define true ((bool)1) 
 178             #define false ((bool)0) 
 184 #if !defined(HAVE_BOOL) && !defined(bool) && !defined(VMS) 
 185     // NB: of course, this doesn't replace the standard type, because, for 
 186     //     example, overloading based on bool/int parameter doesn't work and 
 187     //     so should be avoided in portable programs 
 188     typedef unsigned int bool; 
 191 // deal with TRUE/true stuff: we assume that if the compiler supports bool, it 
 192 // supports true/false as well and that, OTOH, if it does _not_ support bool, 
 193 // it doesn't support these keywords (this is less sure, in particular VC++ 
 194 // 4.x could be a problem here) 
 196     #define true ((bool)1) 
 197     #define false ((bool)0) 
 200 // for backwards compatibility, also define TRUE and FALSE 
 202 // note that these definitions should work both in C++ and C code, so don't 
 203 // use true/false below 
 212 typedef short int WXTYPE
; 
 214 // special care should be taken with this type under Windows where the real 
 215 // window id is unsigned, so we must always do the cast before comparing them 
 216 // (or else they would be always different!). Usign wxGetWindowId() which does 
 217 // the cast itself is recommended. Note that this type can't be unsigned 
 218 // because wxID_ANY == -1 is a valid (and largely used) value for window id. 
 219 typedef int wxWindowID
; 
 221 // ---------------------------------------------------------------------------- 
 222 // other feature tests 
 223 // ---------------------------------------------------------------------------- 
 225 // Every ride down a slippery slope begins with a single step.. 
 227 // Yes, using nested classes is indeed against our coding standards in 
 228 // general, but there are places where you can use them to advantage 
 229 // without totally breaking ports that cannot use them.  If you do, then 
 230 // wrap it in this guard, but such cases should still be relatively rare. 
 232     #define wxUSE_NESTED_CLASSES    1 
 234     #define wxUSE_NESTED_CLASSES    0 
 237 // check for explicit keyword support 
 238 #ifndef HAVE_EXPLICIT 
 239     #if defined(__VISUALC__) && (__VISUALC__ >= 1100) 
 240         // VC++ 6.0 and 5.0 have explicit (what about earlier versions?) 
 241         #define HAVE_EXPLICIT 
 242     #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ 
 243           && wxCHECK_GCC_VERSION(2, 95) 
 244         // GCC 2.95 has explicit, what about earlier versions? 
 245         #define HAVE_EXPLICIT 
 246     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520) 
 247         // BC++ 4.52 doesn't support explicit, CBuilder 1 does 
 248         #define HAVE_EXPLICIT 
 249     #elif defined(__MWERKS__) && (__MWERKS__ >= 0x2400) 
 250         // Metrowerks CW6 or higher has explicit 
 251         #define HAVE_EXPLICIT 
 252     #elif defined(__DIGITALMARS__) 
 253         #define HAVE_EXPLICIT 
 255 #endif // !HAVE_EXPLICIT 
 258     #define wxEXPLICIT explicit 
 259 #else // !HAVE_EXPLICIT 
 261 #endif // HAVE_EXPLICIT/!HAVE_EXPLICIT 
 263 // check for static/const/reinterpret_cast<>() 
 264 #ifndef HAVE_STATIC_CAST 
 265     #if defined(__VISUALC__) && (__VISUALC__ >= 1100) 
 266         // VC++ 6.0 and 5.0 have C++ casts (what about earlier versions?) 
 267         #define HAVE_CXX_CASTS 
 268     #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ 
 269           && wxCHECK_GCC_VERSION(2, 95) 
 270         // GCC 2.95 has C++ casts, what about earlier versions? 
 271         #define HAVE_CXX_CASTS 
 273 #endif // HAVE_STATIC_CAST 
 275 #ifdef HAVE_CXX_CASTS 
 276     #ifndef HAVE_CONST_CAST 
 277         #define HAVE_CONST_CAST 
 279 #endif // HAVE_CXX_CASTS 
 281 #ifndef HAVE_STD_WSTRING 
 282     #if defined(__VISUALC__) && (__VISUALC__ >= 1100) 
 283         // VC++ 6.0 and 5.0 have std::wstring (what about earlier versions?) 
 284         #define HAVE_STD_WSTRING 
 285     #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ 
 286           && wxCHECK_GCC_VERSION(3, 1) 
 287         // GCC 3.1 has std::wstring; 3.0 never was in MinGW, 2.95 hasn't it 
 288         #define HAVE_STD_WSTRING 
 292 #ifndef HAVE_STD_STRING_COMPARE 
 293     #if defined(__VISUALC__) && (__VISUALC__ >= 1100) 
 294         // VC++ 6.0 and 5.0 have std::string::compare 
 295         // (what about earlier versions?) 
 296         #define HAVE_STD_STRING_COMPARE 
 297     #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ 
 298           && wxCHECK_GCC_VERSION(3, 1) 
 299         // GCC 3.1 has std::string::compare; 
 300         // 3.0 never was in MinGW, 2.95 hasn't it 
 301         #define HAVE_STD_STRING_COMPARE 
 305 // ---------------------------------------------------------------------------- 
 306 // portable calling conventions macros 
 307 // ---------------------------------------------------------------------------- 
 309 // stdcall is used for all functions called by Windows under Windows 
 310 #if defined(__WINDOWS__) 
 311     #if defined(__GNUWIN32__) 
 312         #define wxSTDCALL __attribute__((stdcall)) 
 314         // both VC++ and Borland understand this 
 315         #define wxSTDCALL _stdcall 
 319     // no such stupidness under Unix 
 323 // LINKAGEMODE mode is empty for everyting except OS/2 
 326 #endif // LINKAGEMODE 
 328 // wxCALLBACK should be used for the functions which are called back by 
 329 // Windows (such as compare function for wxListCtrl) 
 330 #if defined(__WIN32__) && !defined(__WXMICROWIN__) 
 331     #define wxCALLBACK wxSTDCALL 
 333     // no stdcall under Unix nor Win16 
 337 // generic calling convention for the extern "C" functions 
 339 #if defined(__VISUALC__) 
 340   #define   wxC_CALLING_CONV    _cdecl 
 341 #elif defined(__VISAGECPP__) 
 342   #define   wxC_CALLING_CONV    _Optlink 
 344   #define   wxC_CALLING_CONV 
 347 // callling convention for the qsort(3) callback 
 348 #define wxCMPFUNC_CONV wxC_CALLING_CONV 
 351 #define CMPFUNC_CONV wxCMPFUNC_CONV 
 353 // ---------------------------------------------------------------------------- 
 354 // Making or using wxWindows as a Windows DLL 
 355 // ---------------------------------------------------------------------------- 
 357 #if defined(__WXMSW__) 
 358     // __declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well 
 360     #if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__) 
 361         #define WXEXPORT __declspec(dllexport) 
 362         #define WXIMPORT __declspec(dllimport) 
 363     #else // compiler doesn't support __declspec() 
 367 #elif defined(__WXPM__) 
 368     #if defined (__WATCOMC__) 
 369         #define WXEXPORT __declspec(dllexport) 
 370         // __declspec(dllimport) prepends __imp to imported symbols. We do NOT 
 373     #elif (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ))) 
 374         #define WXEXPORT _Export 
 375         #define WXIMPORT _Export 
 377 #elif defined(__WXMAC__) || defined(__WXCOCOA__) 
 379         #define WXEXPORT __declspec(export) 
 380         #define WXIMPORT __declspec(import) 
 384 // for other platforms/compilers we don't anything 
 391    We support building wxWindows as a set of several libraries but we don't 
 392    support arbitrary combinations of libs/DLLs: either we build all of them as 
 393    DLLs (in which case WXMAKINGDLL is defined) or none (it isn't). 
 395    However we have a problem because we need separate WXDLLEXPORT versions for 
 396    different libraries as, for example, wxString class should be dllexported 
 397    when compiled in wxBase and dllimported otherwise, so we do define separate 
 398    WXMAKING/USINGDLL_XYZ constants for each component XYZ. 
 402         #define WXMAKINGDLL_BASE 
 405     #define WXMAKINGDLL_NET 
 406     #define WXMAKINGDLL_CORE 
 407     #define WXMAKINGDLL_ADV 
 408     #define WXMAKINGDLL_ODBC 
 409     #define WXMAKINGDLL_DBGRID 
 410     #define WXMAKINGDLL_HTML 
 411     #define WXMAKINGDLL_XML 
 412 #endif // WXMAKINGDLL 
 414 // WXDLLEXPORT maps to export declaration when building the DLL, to import 
 415 // declaration if using it or to nothing at all if we don't use wxWin as DLL 
 416 #ifdef WXMAKINGDLL_BASE 
 417     #define WXDLLIMPEXP_BASE WXEXPORT 
 418     #define WXDLLIMPEXP_DATA_BASE(type) WXEXPORT type 
 419 #elif defined(WXUSINGDLL) 
 420     #define WXDLLIMPEXP_BASE WXIMPORT 
 421     #define WXDLLIMPEXP_DATA_BASE(type) WXIMPORT type 
 422 #else // not making nor using DLL 
 423     #define WXDLLIMPEXP_BASE 
 424     #define WXDLLIMPEXP_DATA_BASE(type) type 
 427 #ifdef WXMAKINGDLL_NET 
 428     #define WXDLLIMPEXP_NET WXEXPORT 
 429     #define WXDLLIMPEXP_DATA_NET(type) WXEXPORT type 
 430 #elif defined(WXUSINGDLL) 
 431     #define WXDLLIMPEXP_NET WXIMPORT 
 432     #define WXDLLIMPEXP_DATA_NET(type) WXIMPORT type 
 433 #else // not making nor using DLL 
 434     #define WXDLLIMPEXP_NET 
 435     #define WXDLLIMPEXP_DATA_NET(type) type 
 438 #ifdef WXMAKINGDLL_CORE 
 439     #define WXDLLIMPEXP_CORE WXEXPORT 
 440     #define WXDLLIMPEXP_DATA_CORE(type) WXEXPORT type 
 441 #elif defined(WXUSINGDLL) 
 442     #define WXDLLIMPEXP_CORE WXIMPORT 
 443     #define WXDLLIMPEXP_DATA_CORE(type) WXIMPORT type 
 444 #else // not making nor using DLL 
 445     #define WXDLLIMPEXP_CORE 
 446     #define WXDLLIMPEXP_DATA_CORE(type) type 
 449 #ifdef WXMAKINGDLL_ADV 
 450     #define WXDLLIMPEXP_ADV WXEXPORT 
 451     #define WXDLLIMPEXP_DATA_ADV(type) WXEXPORT type 
 452 #elif defined(WXUSINGDLL) 
 453     #define WXDLLIMPEXP_ADV WXIMPORT 
 454     #define WXDLLIMPEXP_DATA_ADV(type) WXIMPORT type 
 455 #else // not making nor using DLL 
 456     #define WXDLLIMPEXP_ADV 
 457     #define WXDLLIMPEXP_DATA_ADV(type) type 
 460 #ifdef WXMAKINGDLL_ODBC 
 461     #define WXDLLIMPEXP_ODBC WXEXPORT 
 462     #define WXDLLIMPEXP_DATA_ODBC(type) WXEXPORT type 
 463 #elif defined(WXUSINGDLL) 
 464     #define WXDLLIMPEXP_ODBC WXIMPORT 
 465     #define WXDLLIMPEXP_DATA_ODBC(type) WXIMPORT type 
 466 #else // not making nor using DLL 
 467     #define WXDLLIMPEXP_ODBC 
 468     #define WXDLLIMPEXP_DATA_ODBC(type) type 
 471 #ifdef WXMAKINGDLL_DBGRID 
 472     #define WXDLLIMPEXP_DBGRID WXEXPORT 
 473     #define WXDLLIMPEXP_DATA_DBGRID(type) WXEXPORT type 
 474 #elif defined(WXUSINGDLL) 
 475     #define WXDLLIMPEXP_DBGRID WXIMPORT 
 476     #define WXDLLIMPEXP_DATA_DBGRID(type) WXIMPORT type 
 477 #else // not making nor using DLL 
 478     #define WXDLLIMPEXP_DBGRID 
 479     #define WXDLLIMPEXP_DATA_DBGRID(type) type 
 482 #ifdef WXMAKINGDLL_HTML 
 483     #define WXDLLIMPEXP_HTML WXEXPORT 
 484     #define WXDLLIMPEXP_DATA_HTML(type) WXEXPORT type 
 485 #elif defined(WXUSINGDLL) 
 486     #define WXDLLIMPEXP_HTML WXIMPORT 
 487     #define WXDLLIMPEXP_DATA_HTML(type) WXIMPORT type 
 488 #else // not making nor using DLL 
 489     #define WXDLLIMPEXP_HTML 
 490     #define WXDLLIMPEXP_DATA_HTML(type) type 
 493 #ifdef WXMAKINGDLL_GL 
 494     #define WXDLLIMPEXP_GL WXEXPORT 
 495 #elif defined(WXUSINGDLL) 
 496     #define WXDLLIMPEXP_GL WXIMPORT 
 497 #else // not making nor using DLL 
 498     #define WXDLLIMPEXP_GL 
 501 #ifdef WXMAKINGDLL_XML 
 502     #define WXDLLIMPEXP_XML WXEXPORT 
 503 #elif defined(WXUSINGDLL) 
 504     #define WXDLLIMPEXP_XML WXIMPORT 
 505 #else // not making nor using DLL 
 506     #define WXDLLIMPEXP_XML 
 509 // for backwards compatibility, define suffix-less versions too 
 510 #define WXDLLEXPORT WXDLLIMPEXP_CORE 
 511 #define WXDLLEXPORT_DATA WXDLLIMPEXP_DATA_CORE 
 513 // ---------------------------------------------------------------------------- 
 514 // Very common macros 
 515 // ---------------------------------------------------------------------------- 
 517 // Printf-like attribute definitions to obtain warnings with GNU C/C++ 
 518 #if defined(__GNUC__) && !wxUSE_UNICODE 
 519 #  ifndef ATTRIBUTE_PRINTF 
 520 #    define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) 
 521 #    define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2) 
 522 #    define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3) 
 523 #    define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4) 
 524 #    define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5) 
 525 #    define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6) 
 526 #  endif /* ATTRIBUTE_PRINTF */ 
 528 #  ifndef ATTRIBUTE_PRINTF 
 529 #    define ATTRIBUTE_PRINTF 
 530 #    define ATTRIBUTE_PRINTF_1 
 531 #    define ATTRIBUTE_PRINTF_2 
 532 #    define ATTRIBUTE_PRINTF_3 
 533 #    define ATTRIBUTE_PRINTF_4 
 534 #    define ATTRIBUTE_PRINTF_5 
 535 #  endif /* ATTRIBUTE_PRINTF */ 
 538 // Macro to issue warning when using deprecated functions with gcc3 or MSVC7: 
 539 #if wxCHECK_GCC_VERSION(3, 1) 
 540     #define wxDEPRECATED(x) x __attribute__ ((deprecated)) 
 541 #elif defined(__VISUALC__) && (__VISUALC__ >= 1300) 
 542     #define wxDEPRECATED(x) __declspec(deprecated) x 
 544     #define wxDEPRECATED(x) x 
 547 // everybody gets the assert and other debug macros 
 549 #include "wx/debug.h" 
 552 // NULL declaration: it must be defined as 0 for C++ programs (in particular, 
 553 // it must not be defined as "(void *)0" which is standard for C but completely 
 557 // Macro to cut down on compiler warnings. 
 558 #if REMOVE_UNUSED_ARG 
 559     #define WXUNUSED(identifier) /* identifier */ 
 560 #else  // stupid, broken compiler 
 561     #define WXUNUSED(identifier) identifier 
 564 // some arguments are only used in debug mode, but unused in release one 
 566     #define WXUNUSED_UNLESS_DEBUG(param)  param 
 568     #define WXUNUSED_UNLESS_DEBUG(param)  WXUNUSED(param) 
 571 // delete pointer if it is not NULL and NULL it afterwards 
 572 // (checking that it's !NULL before passing it to delete is just a 
 573 //  a question of style, because delete will do it itself anyhow, but it might 
 574 //  be considered as an error by some overzealous debugging implementations of 
 575 //  the library, so we do it ourselves) 
 576 #define wxDELETE(p)      if ( (p) != NULL ) { delete p; p = NULL; } 
 578 // delete an array and NULL it (see comments above) 
 579 #define wxDELETEA(p)     if ( (p) ) { delete [] (p); p = NULL; } 
 581 // size of statically declared array 
 582 #define WXSIZEOF(array)   (sizeof(array)/sizeof(array[0])) 
 584 // helper macros to concatenate two tokens together 
 585 #define wxCONCAT_HELPER(text, line) text ## line 
 586 #define wxCONCAT(text, line)        wxCONCAT_HELPER(text, line) 
 588 // helper macros to be able to define unique/anonymous objects: this works by 
 589 // appending the current line number to the given identifier to reduce the 
 590 // probability of the conflict (it may still happen if this is used in the 
 591 // headers, hence you should avoid doing it or provide unique prefixes then) 
 592 #define wxCONCAT_LINE(text)         wxCONCAT(text, __LINE__) 
 593 #define wxMAKE_UNIQUE_NAME(text)    wxCONCAT_LINE(text) 
 595 // symbolic constant used by all Find()-like functions returning positive 
 596 // integer on success as failure indicator 
 597 #define wxNOT_FOUND       (-1) 
 599 // ---------------------------------------------------------------------------- 
 600 // compiler specific settings 
 601 // ---------------------------------------------------------------------------- 
 603 // to allow compiling with warning level 4 under Microsoft Visual C++ some 
 604 // warnings just must be disabled 
 606   #pragma warning(disable: 4514) // unreferenced inline func has been removed 
 608   you might be tempted to disable this one also: triggered by CHECK and FAIL 
 609   macros in debug.h, but it's, overall, a rather useful one, so I leave it and 
 610   will try to find some way to disable this warning just for CHECK/FAIL. Anyone? 
 612   #pragma warning(disable: 4127) // conditional expression is constant 
 615 #if defined(__MWERKS__) 
 619     #define except(x) catch(...) 
 622 // where should i put this? we need to make sure of this as it breaks 
 623 // the <iostream> code. 
 624 #if !wxUSE_IOSTREAMH && defined(__WXDEBUG__) 
 626 // #undef __WXDEBUG__ 
 627 #    ifdef wxUSE_DEBUG_NEW_ALWAYS 
 628 #    undef wxUSE_DEBUG_NEW_ALWAYS 
 629 #    define wxUSE_DEBUG_NEW_ALWAYS 0 
 634 // ---------------------------------------------------------------------------- 
 635 // OS mnemonics -- Identify the running OS (useful for Windows) 
 636 // ---------------------------------------------------------------------------- 
 638 // Not all platforms are currently available or supported 
 642     wxCURSES
,                 // Text-only CURSES 
 643     wxXVIEW_X
,                // Sun's XView OpenLOOK toolkit 
 644     wxMOTIF_X
,                // OSF Motif 1.x.x 
 645     wxCOSE_X
,                 // OSF Common Desktop Environment 
 646     wxNEXTSTEP
,               // NeXTStep 
 647     wxMAC
,                    // Apple Mac OS 8/9/X with Mac paths 
 648     wxMAC_DARWIN
,             // Apple Mac OS X with Unix paths 
 651     wxGTK_WIN32
,              // GTK on Win32 
 652     wxGTK_OS2
,                // GTK on OS/2 
 653     wxGTK_BEOS
,               // GTK on BeOS 
 655     wxOS2_PM
,                 // OS/2 Workplace 
 656     wxWINDOWS
,                // Windows or WfW 
 657     wxMICROWINDOWS
,           // MicroWindows 
 658     wxPENWINDOWS
,             // Windows for Pen Computing 
 659     wxWINDOWS_NT
,             // Windows NT 
 660     wxWIN32S
,                 // Windows 32S API 
 661     wxWIN95
,                  // Windows 95 
 662     wxWIN386
,                 // Watcom 32-bit supervisor modus 
 663     wxWINDOWS_CE
,             // Windows CE 
 664     wxMGL_UNIX
,               // MGL with direct hardware access 
 666     wxMGL_WIN32
,              // MGL on Win32 
 667     wxMGL_OS2
,                // MGL on OS/2 
 668     wxMGL_DOS
,                // MGL on MS-DOS 
 669     wxWINDOWS_OS2
,            // Native OS/2 PM 
 670     wxUNIX
,                   // wxBase under Unix 
 671     wxX11                     
// Plain X11 and Universal widgets 
 674 // ---------------------------------------------------------------------------- 
 675 // standard wxWindows types 
 676 // ---------------------------------------------------------------------------- 
 678 // the type for screen and DC coordinates 
 680 #if wxUSE_COMPATIBLE_COORD_TYPES 
 681     // to ensure compatibility with 2.0, we must use long 
 683 #else  // !wxUSE_COMPATIBLE_COORD_TYPES 
 685         // under Win16, int is too small, so use long to allow for bigger 
 687         typedef long wxCoord
; 
 689         // other platforms we support have at least 32bit int - quite enough 
 691     #endif // Win16/!Win16 
 692 #endif // wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES 
 695 // ---------------------------------------------------------------------------- 
 696 // define fixed length types 
 697 // ---------------------------------------------------------------------------- 
 699 // chars are always one byte (by definition), shorts are always two (in 
 704     #define SIZEOF_CHAR 1 
 706 typedef signed char wxInt8
; 
 707 typedef unsigned char wxUint8
; 
 708 typedef wxUint8 wxByte
; 
 713     #if SIZEOF_SHORT != 2 
 714         #error "wxWindows assumes sizeof(short) == 2, please fix the code" 
 717     #define SIZEOF_SHORT 2 
 720 typedef signed short wxInt16
; 
 721 typedef unsigned short wxUint16
; 
 723 typedef wxUint16 wxWord
; 
 726   things are getting more interesting with ints, longs and pointers 
 728   there are several different standard data models described by this table: 
 730   +-----------+----------------------------+ 
 731   |type\model | LP64 ILP64 LLP64 ILP32 LP32| 
 732   +-----------+----------------------------+ 
 734   |short      | 16    16    16    16    16 | 
 735   |int        | 32    64    32    32    16 | 
 736   |long       | 64    64    32    32    32 | 
 738   |void *     | 64    64    64    32    32 | 
 739   +-----------+----------------------------+ 
 741   Win16 used LP32 (but we don't support it any longer), Win32 obviously used 
 742   ILP32 and Win64 uses LLP64 (a.k.a. P64) 
 744   Under Unix LP64 is the most widely used (the only I've ever seen, in fact) 
 749     #if defined(__WIN64__) 
 750         // you may remove this #error and try to compile the library, please 
 751         // report the results to wx-dev@lists.wxwindows.org if you do! 
 752         #error "wxWindows hasn't been tested under Win64, continue at your own risk" 
 754         // the same definitions as for Win32 _should_ work here as only 
 755         // sizeof(void *) changes, but it must be tested first 
 758     // Win64 uses LLP64 model and so ints and longs have the same size as in 
 760     #if defined(__WIN32__) 
 762         typedef unsigned int wxUint32
; 
 764         // conside that if SIZEOF_INT is defined, all the other ones are too 
 767             #define SIZEOF_LONG 4 
 768             #define SIZEOF_WCHAR_T 2 
 770             #define wxSIZE_T_IS_UINT 
 771             #undef wxSIZE_T_IS_ULONG 
 774                 #define SIZEOF_INT_P 8 
 776                 #define SIZEOF_INT_P 4 
 778         #endif // !defined(SIZEOF_INT) 
 780         #error "Unsupported Windows version" 
 783     // SIZEOF_XXX are normally defined by configure 
 786             // must be ILP64 data model, there is normally a special 32 bit 
 787             // type in it but we don't know what it is... 
 788             #error "No 32bit int type on this platform" 
 789         #elif SIZEOF_INT == 4 
 791             typedef unsigned int wxUint32
; 
 792         #elif SIZEOF_INT == 2 
 795                 #error "No 32bit int type on this platform" 
 798             typedef long wxInt32
; 
 799             typedef unsigned long wxUint32
; 
 801             // wxWindows is not ready for 128bit systems yet... 
 802             #error "Unknown sizeof(int) value, what are you compiling for?" 
 804     #else // !defined(SIZEOF_INT) 
 805         // assume sizeof(int) == 4 -- what else can we do? 
 806         wxCOMPILE_TIME_ASSERT( sizeof(int) == 4, IntMustBeExactly4Bytes
); 
 811         typedef unsigned int wxUint32
; 
 813         #if wxUSE_WCHAR_T && !defined(SIZEOF_WCHAR_T) 
 814             // also assume that sizeof(wchar_t) == 2 (under Unix the most 
 815             // common case is 4 but there configure would have defined 
 816             // SIZEOF_WCHAR_T for us) 
 817             // the most common case 
 818             wxCOMPILE_TIME_ASSERT( sizeof(wchar_t) == 2, 
 819                                     Wchar_tMustBeExactly2Bytes
); 
 821             #define SIZEOF_WCHAR_T 2 
 822         #endif // wxUSE_WCHAR_T 
 826 typedef wxUint32 wxDword
; 
 831 // NB: we #define and not typedef wxLongLong_t because we want to be able to 
 832 //     use 'unsigned wxLongLong_t' as well and because we use "#ifdef 
 833 //     wxLongLong_t" in wx/longlong.h 
 835 // to avoid compilation problems on 64bit machines with ambiguous method calls 
 836 // we will need to define this 
 837 #undef wxLongLongIsLong 
 839 // first check for generic cases which are long on 64bit machine and "long 
 840 // long", then check for specific compilers 
 841 #if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) 
 842     #define wxLongLong_t long 
 843     #define wxLongLongSuffix l 
 844     #define wxLongLongFmtSpec _T("l") 
 845     #define wxLongLongIsLong 
 846 #elif (defined(__VISUALC__) && defined(__WIN32__)) || defined( __VMS__ )  
 847     #define wxLongLong_t __int64 
 848     #define wxLongLongSuffix i64 
 849     #define wxLongLongFmtSpec _T("I64") 
 850 #elif defined(__BORLANDC__) && defined(__WIN32__) && (__BORLANDC__ >= 0x520) 
 851     #define wxLongLong_t __int64 
 852     #define wxLongLongSuffix i64 
 853     #define wxLongLongFmtSpec _T("Ld") 
 854 #elif (defined(__WATCOMC__) && defined(__WIN32__)) 
 855       #define wxLongLong_t __int64 
 856       #define wxLongLongSuffix i64 
 857       #define wxLongLongFmtSpec _T("Ld") 
 858 #elif defined(__DIGITALMARS__)  
 859       #define wxLongLong_t __int64 
 860       #define wxLongLongSuffix LL 
 861       #define wxLongLongFmtSpec _T("ll") 
 862 #elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8)  || \ 
 863         defined(__MINGW32__) || \ 
 864         defined(__GNUC__) || \ 
 865         defined(__CYGWIN__) || \ 
 866         defined(__WXMICROWIN__) || \ 
 867         (defined(__DJGPP__) && __DJGPP__ >= 2) 
 868     #define wxLongLong_t long long 
 869     #define wxLongLongSuffix ll 
 870     #define wxLongLongFmtSpec _T("ll") 
 871 #elif defined(__MWERKS__) 
 872     #if __option(longlong) 
 873         #define wxLongLong_t long long 
 874         #define wxLongLongSuffix ll 
 875         #define wxLongLongFmtSpec _T("ll") 
 877         #error "The 64 bit integer support in CodeWarrior has been disabled." 
 878         #error "See the documentation on the 'longlong' pragma." 
 880 #elif defined(__VISAGECPP__) && __IBMCPP__ >= 400 
 881     #define wxLongLong_t long long 
 886     // these macros allow to definea 64 bit constants in a portable way 
 887     #define wxLL(x) wxCONCAT(x, wxLongLongSuffix) 
 888     #define wxULL(x) wxCONCAT(x, wxCONCAT(u, wxLongLongSuffix)) 
 890     typedef wxLongLong_t wxInt64
; 
 891     typedef unsigned wxLongLong_t wxUint64
; 
 895 // base floating point types 
 896 // wxFloat32: 32 bit IEEE float ( 1 sign, 8 exponent bits, 23 fraction bits 
 897 // wxFloat64: 64 bit IEEE float ( 1 sign, 11 exponent bits, 52 fraction bits 
 898 // wxDouble: native fastest representation that has at least wxFloat64 
 899 //           precision, so use the IEEE types for storage, and this for 
 902 typedef float wxFloat32
; 
 903 #if (defined( __WXMAC__ ) || defined(__WXCOCOA__))  && defined (__MWERKS__) 
 904     typedef short double wxFloat64
; 
 906     typedef double wxFloat64
; 
 909 #if defined( __WXMAC__ )  && !defined( __POWERPC__ ) 
 910     typedef long double wxDouble
; 
 912     typedef double wxDouble
; 
 915 // ---------------------------------------------------------------------------- 
 916 // byte ordering related definition and macros 
 917 // ---------------------------------------------------------------------------- 
 921 #define  wxBIG_ENDIAN     4321 
 922 #define  wxLITTLE_ENDIAN  1234 
 923 #define  wxPDP_ENDIAN     3412 
 925 #ifdef WORDS_BIGENDIAN 
 926 #define  wxBYTE_ORDER  wxBIG_ENDIAN 
 928 #define  wxBYTE_ORDER  wxLITTLE_ENDIAN 
 933 #if defined (__MWERKS__) && ( (__MWERKS__ < 0x0900) || macintosh ) 
 934 // assembler versions for these 
 936     inline wxUint16 
wxUINT16_SWAP_ALWAYS( wxUint16 i 
) 
 937         {return (__lhbrx( &i 
, 0 ) );} 
 938     inline wxInt16 
wxINT16_SWAP_ALWAYS( wxInt16 i 
) 
 939         {return (__lhbrx( &i 
, 0 ) );} 
 940     inline wxUint32 
wxUINT32_SWAP_ALWAYS( wxUint32 i 
) 
 941         {return (__lwbrx( &i 
, 0 ) );} 
 942     inline wxInt32 
wxINT32_SWAP_ALWAYS( wxInt32 i 
) 
 943         {return (__lwbrx( &i 
, 0 ) );} 
 945     #pragma parameter __D0 wxUINT16_SWAP_ALWAYS(__D0) 
 946     pascal wxUint16 
wxUINT16_SWAP_ALWAYS(wxUint16 value
) 
 949     #pragma parameter __D0 wxINT16_SWAP_ALWAYS(__D0) 
 950     pascal wxInt16 
wxINT16_SWAP_ALWAYS(wxInt16 value
) 
 953     #pragma parameter __D0 wxUINT32_SWAP_ALWAYS (__D0) 
 954     pascal wxUint32 
wxUINT32_SWAP_ALWAYS(wxUint32 value
) 
 955         = { 0xE158, 0x4840, 0xE158 }; 
 957     #pragma parameter __D0 wxINT32_SWAP_ALWAYS (__D0) 
 958     pascal wxInt32 
wxINT32_SWAP_ALWAYS(wxInt32 value
) 
 959         = { 0xE158, 0x4840, 0xE158 }; 
 963 #define wxUINT16_SWAP_ALWAYS(val) \ 
 965     (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \ 
 966     (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8))) 
 968 #define wxINT16_SWAP_ALWAYS(val) \ 
 970     (((wxUint16) (val) & (wxUint16) 0x00ffU) << 8) | \ 
 971     (((wxUint16) (val) & (wxUint16) 0xff00U) >> 8))) 
 973 #define wxUINT32_SWAP_ALWAYS(val) \ 
 975     (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \ 
 976     (((wxUint32) (val) & (wxUint32) 0x0000ff00U) <<  8) | \ 
 977     (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >>  8) | \ 
 978     (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24))) 
 980 #define wxINT32_SWAP_ALWAYS(val) \ 
 982     (((wxUint32) (val) & (wxUint32) 0x000000ffU) << 24) | \ 
 983     (((wxUint32) (val) & (wxUint32) 0x0000ff00U) <<  8) | \ 
 984     (((wxUint32) (val) & (wxUint32) 0x00ff0000U) >>  8) | \ 
 985     (((wxUint32) (val) & (wxUint32) 0xff000000U) >> 24))) 
 987 // machine specific byte swapping 
 990     #define wxUINT64_SWAP_ALWAYS(val) \ 
 992         (((wxUint64) (val) & (wxUint64) wxULL(0x00000000000000ff)) << 56) | \ 
 993         (((wxUint64) (val) & (wxUint64) wxULL(0x000000000000ff00)) << 40) | \ 
 994         (((wxUint64) (val) & (wxUint64) wxULL(0x0000000000ff0000)) << 24) | \ 
 995         (((wxUint64) (val) & (wxUint64) wxULL(0x00000000ff000000)) <<  8) | \ 
 996         (((wxUint64) (val) & (wxUint64) wxULL(0x000000ff00000000)) >>  8) | \ 
 997         (((wxUint64) (val) & (wxUint64) wxULL(0x0000ff0000000000)) >> 24) | \ 
 998         (((wxUint64) (val) & (wxUint64) wxULL(0x00ff000000000000)) >> 40) | \ 
 999         (((wxUint64) (val) & (wxUint64) wxULL(0xff00000000000000)) >> 56))) 
1001     #define wxINT64_SWAP_ALWAYS(val) \ 
1003         (((wxUint64) (val) & (wxUint64) wxULL(0x00000000000000ff)) << 56) | \ 
1004         (((wxUint64) (val) & (wxUint64) wxULL(0x000000000000ff00)) << 40) | \ 
1005         (((wxUint64) (val) & (wxUint64) wxULL(0x0000000000ff0000)) << 24) | \ 
1006         (((wxUint64) (val) & (wxUint64) wxULL(0x00000000ff000000)) <<  8) | \ 
1007         (((wxUint64) (val) & (wxUint64) wxULL(0x000000ff00000000)) >>  8) | \ 
1008         (((wxUint64) (val) & (wxUint64) wxULL(0x0000ff0000000000)) >> 24) | \ 
1009         (((wxUint64) (val) & (wxUint64) wxULL(0x00ff000000000000)) >> 40) | \ 
1010         (((wxUint64) (val) & (wxUint64) wxULL(0xff00000000000000)) >> 56))) 
1011 #else // !wxLongLong_t 
1012     #define wxUINT64_SWAP_ALWAYS(val) \ 
1014         ((wxULongLong(val) & wxULongLong(0L, 0x000000ffU)) << 56) | \ 
1015         ((wxULongLong(val) & wxULongLong(0L, 0x0000ff00U)) << 40) | \ 
1016         ((wxULongLong(val) & wxULongLong(0L, 0x00ff0000U)) << 24) | \ 
1017         ((wxULongLong(val) & wxULongLong(0L, 0xff000000U)) <<  8) | \ 
1018         ((wxULongLong(val) & wxULongLong(0x000000ffL, 0U)) >>  8) | \ 
1019         ((wxULongLong(val) & wxULongLong(0x0000ff00L, 0U)) >> 24) | \ 
1020         ((wxULongLong(val) & wxULongLong(0x00ff0000L, 0U)) >> 40) | \ 
1021         ((wxULongLong(val) & wxULongLong(0xff000000L, 0U)) >> 56))) 
1023     #define wxINT64_SWAP_ALWAYS(val) \ 
1025         ((wxLongLong(val) & wxLongLong(0L, 0x000000ffU)) << 56) | \ 
1026         ((wxLongLong(val) & wxLongLong(0L, 0x0000ff00U)) << 40) | \ 
1027         ((wxLongLong(val) & wxLongLong(0L, 0x00ff0000U)) << 24) | \ 
1028         ((wxLongLong(val) & wxLongLong(0L, 0xff000000U)) <<  8) | \ 
1029         ((wxLongLong(val) & wxLongLong(0x000000ffL, 0U)) >>  8) | \ 
1030         ((wxLongLong(val) & wxLongLong(0x0000ff00L, 0U)) >> 24) | \ 
1031         ((wxLongLong(val) & wxLongLong(0x00ff0000L, 0U)) >> 40) | \ 
1032         ((wxLongLong(val) & wxLongLong(0xff000000L, 0U)) >> 56))) 
1033 #endif // wxLongLong_t/!wxLongLong_t 
1035 #ifdef WORDS_BIGENDIAN 
1036     #define wxUINT16_SWAP_ON_BE(val)  wxUINT16_SWAP_ALWAYS(val) 
1037     #define wxINT16_SWAP_ON_BE(val)   wxINT16_SWAP_ALWAYS(val) 
1038     #define wxUINT16_SWAP_ON_LE(val)  (val) 
1039     #define wxINT16_SWAP_ON_LE(val)   (val) 
1040     #define wxUINT32_SWAP_ON_BE(val)  wxUINT32_SWAP_ALWAYS(val) 
1041     #define wxINT32_SWAP_ON_BE(val)   wxINT32_SWAP_ALWAYS(val) 
1042     #define wxUINT32_SWAP_ON_LE(val)  (val) 
1043     #define wxINT32_SWAP_ON_LE(val)   (val) 
1044     #define wxUINT64_SWAP_ON_BE(val)  wxUINT64_SWAP_ALWAYS(val) 
1045     #define wxUINT64_SWAP_ON_LE(val)  (val) 
1047     #define wxUINT16_SWAP_ON_LE(val)  wxUINT16_SWAP_ALWAYS(val) 
1048     #define wxINT16_SWAP_ON_LE(val)   wxINT16_SWAP_ALWAYS(val) 
1049     #define wxUINT16_SWAP_ON_BE(val)  (val) 
1050     #define wxINT16_SWAP_ON_BE(val)   (val) 
1051     #define wxUINT32_SWAP_ON_LE(val)  wxUINT32_SWAP_ALWAYS(val) 
1052     #define wxINT32_SWAP_ON_LE(val)   wxINT32_SWAP_ALWAYS(val) 
1053     #define wxUINT32_SWAP_ON_BE(val)  (val) 
1054     #define wxINT32_SWAP_ON_BE(val)   (val) 
1055     #define wxUINT64_SWAP_ON_LE(val)  wxUINT64_SWAP_ALWAYS(val) 
1056     #define wxUINT64_SWAP_ON_BE(val)  (val) 
1059 // Macros to convert from unsigned long to void pointer. 
1060 // High order truncation occurs if the respective type is not large enough. 
1061 #define WXPTRULONGSLICE (((wxBYTE_ORDER==wxBIG_ENDIAN)&&(sizeof(void*)==8)&&(sizeof(unsigned long)<8))?1:0) 
1062 #define wxPtrToULong(p) (((unsigned long*)(&(p)))[WXPTRULONGSLICE]) 
1063 #define wxULongToPtr(p,n) (p=NULL,wxPtrToULong(p)=(unsigned long)(n),p) 
1065 // ---------------------------------------------------------------------------- 
1067 // ---------------------------------------------------------------------------- 
1069 enum wxGeometryCentre
 
1075 // centering into frame rather than screen (obsolete) 
1076 #define wxCENTER_FRAME          0x0000 
1077 // centre on screen rather than parent 
1078 #define wxCENTRE_ON_SCREEN      0x0002 
1079 #define wxCENTER_ON_SCREEN      wxCENTRE_ON_SCREEN 
1083     wxHORIZONTAL              
= 0x0004, 
1084     wxVERTICAL                
= 0x0008, 
1086     wxBOTH                    
= (wxVERTICAL 
| wxHORIZONTAL
) 
1104     wxALL                     
= (wxUP 
| wxDOWN 
| wxRIGHT 
| wxLEFT
) 
1109     wxALIGN_NOT               
= 0x0000, 
1110     wxALIGN_CENTER_HORIZONTAL 
= 0x0100, 
1111     wxALIGN_CENTRE_HORIZONTAL 
= wxALIGN_CENTER_HORIZONTAL
, 
1112     wxALIGN_LEFT              
= wxALIGN_NOT
, 
1113     wxALIGN_TOP               
= wxALIGN_NOT
, 
1114     wxALIGN_RIGHT             
= 0x0200, 
1115     wxALIGN_BOTTOM            
= 0x0400, 
1116     wxALIGN_CENTER_VERTICAL   
= 0x0800, 
1117     wxALIGN_CENTRE_VERTICAL   
= wxALIGN_CENTER_VERTICAL
, 
1119     wxALIGN_CENTER            
= (wxALIGN_CENTER_HORIZONTAL 
| wxALIGN_CENTER_VERTICAL
), 
1120     wxALIGN_CENTRE            
= wxALIGN_CENTER
, 
1122     // a mask to extract alignment from the combination of flags 
1123     wxALIGN_MASK              
= 0x0f00 
1128     wxSTRETCH_NOT             
= 0x0000, 
1133     wxADJUST_MINSIZE          
= 0x8000, 
1137 // border flags: the values are chosen for backwards compatibility 
1140     // this is different from wxBORDER_NONE as by default the controls do have 
1142     wxBORDER_DEFAULT 
= 0, 
1144     wxBORDER_NONE   
= 0x00200000, 
1145     wxBORDER_STATIC 
= 0x01000000, 
1146     wxBORDER_SIMPLE 
= 0x02000000, 
1147     wxBORDER_RAISED 
= 0x04000000, 
1148     wxBORDER_SUNKEN 
= 0x08000000, 
1149     wxBORDER_DOUBLE 
= 0x10000000, 
1151     // a mask to extract border style from the combination of flags 
1152     wxBORDER_MASK   
= 0x1f200000 
1155 // ---------------------------------------------------------------------------- 
1156 // Window style flags 
1157 // ---------------------------------------------------------------------------- 
1160  * Values are chosen so they can be |'ed in a bit list. 
1161  * Some styles are used across more than one group, 
1162  * so the values mustn't clash with others in the group. 
1163  * Otherwise, numbers can be reused across groups. 
1165  * From version 1.66: 
1166  * Window (cross-group) styles now take up the first half 
1167  * of the flag, and control-specific styles the 
1173  * Window (Frame/dialog/subwindow/panel item) style flags 
1175 #define wxVSCROLL               0x80000000 
1176 #define wxHSCROLL               0x40000000 
1177 #define wxCAPTION               0x20000000 
1179 // New styles (border styles are now in their own enum) 
1180 #define wxDOUBLE_BORDER         wxBORDER_DOUBLE 
1181 #define wxSUNKEN_BORDER         wxBORDER_SUNKEN 
1182 #define wxRAISED_BORDER         wxBORDER_RAISED 
1183 #define wxBORDER                wxBORDER_SIMPLE 
1184 #define wxSIMPLE_BORDER         wxBORDER_SIMPLE 
1185 #define wxSTATIC_BORDER         wxBORDER_STATIC 
1186 #define wxNO_BORDER             wxBORDER_NONE 
1188 // wxALWAYS_SHOW_SB: instead of hiding the scrollbar when it is not needed, 
1189 // disable it - but still show (see also wxLB_ALWAYS_SB style) 
1191 // NB: as this style is only supported by wxUniversal and wxMSW so far 
1192 #define wxALWAYS_SHOW_SB        0x00800000 
1194 // Clip children when painting, which reduces flicker in e.g. frames and 
1195 // splitter windows, but can't be used in a panel where a static box must be 
1196 // 'transparent' (panel paints the background for it) 
1197 #define wxCLIP_CHILDREN         0x00400000 
1199 // Note we're reusing the wxCAPTION style because we won't need captions 
1200 // for subwindows/controls 
1201 #define wxCLIP_SIBLINGS         0x20000000 
1203 #define wxTRANSPARENT_WINDOW    0x00100000 
1205 // Add this style to a panel to get tab traversal working outside of dialogs 
1206 // (on by default for wxPanel, wxDialog, wxScrolledWindow) 
1207 #define wxTAB_TRAVERSAL         0x00080000 
1209 // Add this style if the control wants to get all keyboard messages (under 
1210 // Windows, it won't normally get the dialog navigation key events) 
1211 #define wxWANTS_CHARS           0x00040000 
1213 // Make window retained (mostly Motif, I think) -- obsolete (VZ)? 
1214 #define wxRETAINED              0x00020000 
1215 #define wxBACKINGSTORE          wxRETAINED 
1217 // set this flag to create a special popup window: it will be always shown on 
1218 // top of other windows, will capture the mouse and will be dismissed when the 
1219 // mouse is clicked outside of it or if it loses focus in any other way 
1220 #define wxPOPUP_WINDOW          0x00020000 
1222 // force a full repaint when the window is resized (instead of repainting just 
1223 // the invalidated area) 
1224 #define wxFULL_REPAINT_ON_RESIZE 0x00010000 
1226 // obsolete: now this is the default behaviour 
1228 // don't invalidate the whole window (resulting in a PAINT event) when the 
1229 // window is resized (currently, makes sense for wxMSW only) 
1230 #define wxNO_FULL_REPAINT_ON_RESIZE 0 
1233  * Extra window style flags (use wxWS_EX prefix to make it clear that they 
1234  * should be passed to wxWindow::SetExtraStyle(), not SetWindowStyle()) 
1237 // by default, TransferDataTo/FromWindow() only work on direct children of the 
1238 // window (compatible behaviour), set this flag to make them recursively 
1239 // descend into all subwindows 
1240 #define wxWS_EX_VALIDATE_RECURSIVELY    0x00000001 
1242 // wxCommandEvents and the objects of the derived classes are forwarded to the 
1243 // parent window and so on recursively by default. Using this flag for the 
1244 // given window allows to block this propagation at this window, i.e. prevent 
1245 // the events from being propagated further upwards. The dialogs have this 
1246 // flag on by default. 
1247 #define wxWS_EX_BLOCK_EVENTS            0x00000002 
1249 // don't use this window as an implicit parent for the other windows: this must 
1250 // be used with transient windows as otherwise there is the risk of creating a 
1251 // dialog/frame with this window as a parent which would lead to a crash if the 
1252 // parent is destroyed before the child 
1253 #define wxWS_EX_TRANSIENT               0x00000004 
1255 // don't paint the window background, we'll assume it will 
1256 // be done by a theming engine. This is not yet used but could 
1257 // possibly be made to work in the future, at least on Windows 
1258 #define wxWS_EX_THEMED_BACKGROUND       0x00000008 
1260 // this window should always process idle events 
1261 #define wxWS_EX_PROCESS_IDLE            0x00000010 
1263 // this window should always process UI update events 
1264 #define wxWS_EX_PROCESS_UI_UPDATES      0x00000020 
1266 // Use this style to add a context-sensitive help to the window (currently for 
1267 // Win32 only and it doesn't work if wxMINIMIZE_BOX or wxMAXIMIZE_BOX are used) 
1268 #define wxFRAME_EX_CONTEXTHELP  0x00000004 
1269 #define wxDIALOG_EX_CONTEXTHELP 0x00000004 
1272  * wxFrame/wxDialog style flags 
1274 #define wxSTAY_ON_TOP           0x8000 
1275 #define wxICONIZE               0x4000 
1276 #define wxMINIMIZE              wxICONIZE 
1277 #define wxMAXIMIZE              0x2000 
1278 #define wxCLOSE_BOX                 0x1000 
1280 #define wxSYSTEM_MENU           0x0800 
1281 #define wxMINIMIZE_BOX          0x0400 
1282 #define wxMAXIMIZE_BOX          0x0200 
1283 #define wxTINY_CAPTION_HORIZ    0x0100 
1284 #define wxTINY_CAPTION_VERT     0x0080 
1285 #define wxRESIZE_BORDER         0x0040 
1287 #define wxDIALOG_NO_PARENT      0x0001  // Don't make owned by apps top window 
1288 #define wxFRAME_NO_TASKBAR      0x0002  // No taskbar button (MSW only) 
1289 #define wxFRAME_TOOL_WINDOW     0x0004  // No taskbar button, no system menu 
1290 #define wxFRAME_FLOAT_ON_PARENT 0x0008  // Always above its parent 
1291 #define wxFRAME_SHAPED          0x0010  // Create a window that is able to be shaped 
1293 // deprecated versions defined for compatibility reasons 
1294 #define wxRESIZE_BOX            wxMAXIMIZE_BOX 
1295 #define wxTHICK_FRAME           wxRESIZE_BORDER 
1297 // obsolete styles, unused any more 
1298 #define wxDIALOG_MODAL          0x0020  // free flag value 0x0020 
1299 #define wxDIALOG_MODELESS       0 
1301 #define wxUSER_COLOURS          0 
1305  * MDI parent frame style flags 
1306  * Can overlap with some of the above. 
1309 #define wxFRAME_NO_WINDOW_MENU  0x0100 
1311 #define wxDEFAULT_FRAME_STYLE \ 
1312   (wxSYSTEM_MENU | wxRESIZE_BORDER | \ 
1313    wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxCLOSE_BOX | \ 
1314    wxCAPTION | wxCLIP_CHILDREN) 
1316 #define wxDEFAULT_DIALOG_STYLE  (wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX) 
1319  * wxExtDialog style flags 
1321 #define wxED_CLIENT_MARGIN      0x0004 
1322 #define wxED_BUTTONS_BOTTOM     0x0000  // has no effect 
1323 #define wxED_BUTTONS_RIGHT      0x0002 
1324 #define wxED_STATIC_LINE        0x0001 
1326 #if defined(__WXMSW__) || defined(__WXMAC__) 
1327 #   define wxEXT_DIALOG_STYLE  (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN) 
1329 #   define wxEXT_DIALOG_STYLE  (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN|wxED_STATIC_LINE) 
1333  * wxMenuBar style flags 
1335 // use native docking 
1336 #define wxMB_DOCKABLE       0x0001 
1339  * wxMenu style flags 
1341 #define wxMENU_TEAROFF      0x0001 
1344  * Apply to all panel items 
1346 #define wxCOLOURED          0x0800 
1347 #define wxFIXED_LENGTH      0x0400 
1350  * Styles for wxListBox 
1352 #define wxLB_SORT           0x0010 
1353 #define wxLB_SINGLE         0x0020 
1354 #define wxLB_MULTIPLE       0x0040 
1355 #define wxLB_EXTENDED       0x0080 
1356 // wxLB_OWNERDRAW is Windows-only 
1357 #define wxLB_OWNERDRAW      0x0100 
1358 #define wxLB_NEEDED_SB      0x0200 
1359 #define wxLB_ALWAYS_SB      0x0400 
1360 #define wxLB_HSCROLL        wxHSCROLL 
1361 // always show an entire number of rows 
1362 #define wxLB_INT_HEIGHT     0x0800 
1364 // deprecated synonyms 
1365 #define wxPROCESS_ENTER     0x0400  // wxTE_PROCESS_ENTER 
1366 #define wxPASSWORD          0x0800  // wxTE_PASSWORD 
1369  * wxComboBox style flags 
1371 #define wxCB_SIMPLE         0x0004 
1372 #define wxCB_SORT           0x0008 
1373 #define wxCB_READONLY       0x0010 
1374 #define wxCB_DROPDOWN       0x0020 
1377  * wxRadioBox style flags 
1379 // should we number the items from left to right or from top to bottom in a 2d 
1381 #define wxRA_LEFTTORIGHT    0x0001 
1382 #define wxRA_TOPTOBOTTOM    0x0002 
1384 // New, more intuitive names to specify majorDim argument 
1385 #define wxRA_SPECIFY_COLS   wxHORIZONTAL 
1386 #define wxRA_SPECIFY_ROWS   wxVERTICAL 
1388 // Old names for compatibility 
1389 #define wxRA_HORIZONTAL     wxHORIZONTAL 
1390 #define wxRA_VERTICAL       wxVERTICAL 
1393  * wxRadioButton style flag 
1395 #define wxRB_GROUP          0x0004 
1396 #define wxRB_SINGLE         0x0008 
1401 #define wxSL_HORIZONTAL      wxHORIZONTAL // 4 
1402 #define wxSL_VERTICAL        wxVERTICAL   // 8 
1403 // The next one is obsolete - use scroll events instead 
1404 #define wxSL_NOTIFY_DRAG     0x0000 
1405 #define wxSL_TICKS           0x0010 
1406 #define wxSL_AUTOTICKS       wxSL_TICKS // we don't support manual ticks 
1407 #define wxSL_LABELS          0x0020 
1408 #define wxSL_LEFT            0x0040 
1409 #define wxSL_TOP             0x0080 
1410 #define wxSL_RIGHT           0x0100 
1411 #define wxSL_BOTTOM          0x0200 
1412 #define wxSL_BOTH            0x0400 
1413 #define wxSL_SELRANGE        0x0800 
1418 #define wxSB_HORIZONTAL      wxHORIZONTAL 
1419 #define wxSB_VERTICAL        wxVERTICAL 
1422  * wxSpinButton flags. 
1423  * Note that a wxSpinCtrl is sometimes defined as 
1424  * a wxTextCtrl, and so the flags must be different 
1425  * from wxTextCtrl's. 
1427 #define wxSP_HORIZONTAL       wxHORIZONTAL // 4 
1428 #define wxSP_VERTICAL         wxVERTICAL   // 8 
1429 #define wxSP_ARROW_KEYS       0x1000 
1430 #define wxSP_WRAP             0x2000 
1435 #define wxNB_FIXEDWIDTH       0x0010 
1436 #define wxNB_TOP              0x0000    // default 
1437 #define wxNB_LEFT             0x0020 
1438 #define wxNB_RIGHT            0x0040 
1439 #define wxNB_BOTTOM           0x0080 
1440 #define wxNB_MULTILINE        0x0100 
1445 #define wxTC_RIGHTJUSTIFY     0x0010 
1446 #define wxTC_FIXEDWIDTH       0x0020 
1447 #define wxTC_TOP              0x0000    // default 
1448 #define wxTC_LEFT             0x0020 
1449 #define wxTC_RIGHT            0x0040 
1450 #define wxTC_BOTTOM           0x0080 
1451 #define wxTC_MULTILINE        wxNB_MULTILINE 
1452 #define wxTC_OWNERDRAW        0x0200 
1455  * wxStatusBar95 flags 
1457 #define wxST_SIZEGRIP         0x0010 
1460  * wxStaticText flags 
1462 #define wxST_NO_AUTORESIZE    0x0001 
1465  * wxStaticBitmap flags 
1467 #define wxBI_EXPAND           wxEXPAND 
1470  * wxStaticLine flags 
1472 #define wxLI_HORIZONTAL         wxHORIZONTAL 
1473 #define wxLI_VERTICAL           wxVERTICAL 
1476  * wxProgressDialog flags 
1478 #define wxPD_CAN_ABORT          0x0001 
1479 #define wxPD_APP_MODAL          0x0002 
1480 #define wxPD_AUTO_HIDE          0x0004 
1481 #define wxPD_ELAPSED_TIME       0x0008 
1482 #define wxPD_ESTIMATED_TIME     0x0010 
1483 // wxGA_SMOOTH = 0x0020 may also be used with wxProgressDialog 
1484 // NO!!! This is wxDIALOG_MODAL and will cause the progress dialog to 
1485 // be modal. No progress will then be made at all. 
1486 #define wxPD_REMAINING_TIME     0x0040 
1489  * wxDirDialog styles 
1492 #define wxDD_NEW_DIR_BUTTON     0x0080 
1495  * extended dialog specifiers. these values are stored in a different 
1496  * flag and thus do not overlap with other style flags. note that these 
1497  * values do not correspond to the return values of the dialogs (for 
1498  * those values, look at the wxID_XXX defines). 
1501 // wxCENTRE already defined as  0x00000001 
1502 #define wxYES                   0x00000002 
1503 #define wxOK                    0x00000004 
1504 #define wxNO                    0x00000008 
1505 #define wxYES_NO                (wxYES | wxNO) 
1506 #define wxCANCEL                0x00000010 
1508 #define wxYES_DEFAULT           0x00000000  // has no effect (default) 
1509 #define wxNO_DEFAULT            0x00000080 
1511 #define wxICON_EXCLAMATION      0x00000100 
1512 #define wxICON_HAND             0x00000200 
1513 #define wxICON_WARNING          wxICON_EXCLAMATION 
1514 #define wxICON_ERROR            wxICON_HAND 
1515 #define wxICON_QUESTION         0x00000400 
1516 #define wxICON_INFORMATION      0x00000800 
1517 #define wxICON_STOP             wxICON_HAND 
1518 #define wxICON_ASTERISK         wxICON_INFORMATION 
1519 #define wxICON_MASK             (0x00000100|0x00000200|0x00000400|0x00000800) 
1521 #define  wxFORWARD              0x00001000 
1522 #define  wxBACKWARD             0x00002000 
1523 #define  wxRESET                0x00004000 
1524 #define  wxHELP                 0x00008000 
1525 #define  wxMORE                 0x00010000 
1526 #define  wxSETUP                0x00020000 
1528 // ---------------------------------------------------------------------------- 
1530 // ---------------------------------------------------------------------------- 
1532 // any id: means that we don't care about the id, whether when installing an 
1533 // event handler or when creating a new window 
1539 // id for a separator line in the menu (invalid for normal item) 
1545 // Standard menu IDs 
1566     wxID_HELP_PROCEDURES
, 
1584     wxID_VIEW_LARGEICONS
, 
1585     wxID_VIEW_SMALLICONS
, 
1602     // Standard button IDs 
1622     // System menu IDs (used by wxUniv): 
1623     wxID_SYSTEM_MENU 
= 5200, 
1627     wxID_MAXIMIZE_FRAME
, 
1631     // IDs used by generic file dialog (13 consecutive starting from this value) 
1632     wxID_FILEDLGG 
= 5900, 
1637 // ---------------------------------------------------------------------------- 
1639 // ---------------------------------------------------------------------------- 
1641 // menu and toolbar item kinds 
1644     wxITEM_SEPARATOR 
= -1, 
1657     wxHT_SCROLLBAR_FIRST 
= wxHT_NOWHERE
, 
1658     wxHT_SCROLLBAR_ARROW_LINE_1
,    // left or upper arrow to scroll by line 
1659     wxHT_SCROLLBAR_ARROW_LINE_2
,    // right or down 
1660     wxHT_SCROLLBAR_ARROW_PAGE_1
,    // left or upper arrow to scroll by page 
1661     wxHT_SCROLLBAR_ARROW_PAGE_2
,    // right or down 
1662     wxHT_SCROLLBAR_THUMB
,           // on the thumb 
1663     wxHT_SCROLLBAR_BAR_1
,           // bar to the left/above the thumb 
1664     wxHT_SCROLLBAR_BAR_2
,           // bar to the right/below the thumb 
1665     wxHT_SCROLLBAR_LAST
, 
1668     wxHT_WINDOW_OUTSIDE
,            // not in this window at all 
1669     wxHT_WINDOW_INSIDE
,             // in the client area 
1670     wxHT_WINDOW_VERT_SCROLLBAR
,     // on the vertical scrollbar 
1671     wxHT_WINDOW_HORZ_SCROLLBAR
,     // on the horizontal scrollbar 
1672     wxHT_WINDOW_CORNER
,             // on the corner between 2 scrollbars 
1677 // ---------------------------------------------------------------------------- 
1678 // Possible SetSize flags 
1679 // ---------------------------------------------------------------------------- 
1681 // Use internally-calculated width if -1 
1682 #define wxSIZE_AUTO_WIDTH       0x0001 
1683 // Use internally-calculated height if -1 
1684 #define wxSIZE_AUTO_HEIGHT      0x0002 
1685 // Use internally-calculated width and height if each is -1 
1686 #define wxSIZE_AUTO             (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT) 
1687 // Ignore missing (-1) dimensions (use existing). 
1688 // For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code. 
1689 #define wxSIZE_USE_EXISTING     0x0000 
1690 // Allow -1 as a valid position 
1691 #define wxSIZE_ALLOW_MINUS_ONE  0x0004 
1692 // Don't do parent client adjustments (for implementation only) 
1693 #define wxSIZE_NO_ADJUSTMENTS   0x0008 
1695 // ---------------------------------------------------------------------------- 
1697 // ---------------------------------------------------------------------------- 
1701     // Text font families 
1708     wxTELETYPE
,  /* @@@@ */ 
1710     // Proportional or Fixed width fonts (not yet used) 
1717     // Also wxNORMAL for normal (non-italic text) 
1731     // Brush & Pen Stippling. Note that a stippled pen cannot be dashed!! 
1732     // Note also that stippling a Pen IS meaningfull, because a Line is 
1733     wxSTIPPLE_MASK_OPAQUE
, //mask is used for blitting monochrome using text fore and back ground colors 
1734     wxSTIPPLE_MASK
,        //mask is used for masking areas in the stipple bitmap (TO DO) 
1735     // drawn with a Pen, and without any Brush -- and it can be stippled. 
1753 // VZ: why doesn't it start with "wx"? FIXME 
1754 #define IS_HATCH(s)    ((s)>=wxBDIAGONAL_HATCH && (s)<=wxVERTICAL_HATCH) 
1759   wxCLEAR
,        wxROP_BLACK 
= wxCLEAR
,             wxBLIT_BLACKNESS 
= wxCLEAR
,        // 0 
1760   wxXOR
,          wxROP_XORPEN 
= wxXOR
,              wxBLIT_SRCINVERT 
= wxXOR
,          // src XOR dst 
1761   wxINVERT
,       wxROP_NOT 
= wxINVERT
,              wxBLIT_DSTINVERT 
= wxINVERT
,       // NOT dst 
1762   wxOR_REVERSE
,   wxROP_MERGEPENNOT 
= wxOR_REVERSE
,  wxBLIT_00DD0228 
= wxOR_REVERSE
,    // src OR (NOT dst) 
1763   wxAND_REVERSE
,  wxROP_MASKPENNOT 
= wxAND_REVERSE
,  wxBLIT_SRCERASE 
= wxAND_REVERSE
,   // src AND (NOT dst) 
1764   wxCOPY
,         wxROP_COPYPEN 
= wxCOPY
,            wxBLIT_SRCCOPY 
= wxCOPY
,           // src 
1765   wxAND
,          wxROP_MASKPEN 
= wxAND
,             wxBLIT_SRCAND 
= wxAND
,             // src AND dst 
1766   wxAND_INVERT
,   wxROP_MASKNOTPEN 
= wxAND_INVERT
,   wxBLIT_00220326 
= wxAND_INVERT
,    // (NOT src) AND dst 
1767   wxNO_OP
,        wxROP_NOP 
= wxNO_OP
,               wxBLIT_00AA0029 
= wxNO_OP
,         // dst 
1768   wxNOR
,          wxROP_NOTMERGEPEN 
= wxNOR
,         wxBLIT_NOTSRCERASE 
= wxNOR
,        // (NOT src) AND (NOT dst) 
1769   wxEQUIV
,        wxROP_NOTXORPEN 
= wxEQUIV
,         wxBLIT_00990066 
= wxEQUIV
,         // (NOT src) XOR dst 
1770   wxSRC_INVERT
,   wxROP_NOTCOPYPEN 
= wxSRC_INVERT
,   wxBLIT_NOTSCRCOPY 
= wxSRC_INVERT
,  // (NOT src) 
1771   wxOR_INVERT
,    wxROP_MERGENOTPEN 
= wxOR_INVERT
,   wxBLIT_MERGEPAINT 
= wxOR_INVERT
,   // (NOT src) OR dst 
1772   wxNAND
,         wxROP_NOTMASKPEN 
= wxNAND
,         wxBLIT_007700E6 
= wxNAND
,          // (NOT src) OR (NOT dst) 
1773   wxOR
,           wxROP_MERGEPEN 
= wxOR
,             wxBLIT_SRCPAINT 
= wxOR
,            // src OR dst 
1774   wxSET
,          wxROP_WHITE 
= wxSET
,               wxBLIT_WHITENESS 
= wxSET           
// 1 
1780     wxFLOOD_SURFACE 
= 1, 
1784 // Polygon filling mode 
1791 // ToolPanel in wxFrame (VZ: unused?) 
1800 // the values of the format constants should be the same as correspondign 
1801 // CF_XXX constants in Windows API 
1805     wxDF_TEXT 
=             1,  /* CF_TEXT */ 
1806     wxDF_BITMAP 
=           2,  /* CF_BITMAP */ 
1807     wxDF_METAFILE 
=         3,  /* CF_METAFILEPICT */ 
1811     wxDF_OEMTEXT 
=          7,  /* CF_OEMTEXT */ 
1812     wxDF_DIB 
=              8,  /* CF_DIB */ 
1817     wxDF_UNICODETEXT 
=      13, 
1818     wxDF_ENHMETAFILE 
=      14, 
1819     wxDF_FILENAME 
=         15, /* CF_HDROP */ 
1822     wxDF_HTML 
=             30, /* Note: does not correspond to CF_ constant */ 
1848     WXK_PRIOR
,  // Page up 
1849     WXK_NEXT
,   // Page down 
1922     WXK_NUMPAD_PAGEDOWN
, 
1928     WXK_NUMPAD_MULTIPLY
, 
1930     WXK_NUMPAD_SEPARATOR
, 
1931     WXK_NUMPAD_SUBTRACT
, 
1942 enum wxHotkeyModifier
 
1952 // Mapping modes (same values as used by Windows, don't change) 
1967 /* Shortcut for easier dialog-unit-to-pixel conversion */ 
1968 #define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt) 
1973     wxPAPER_NONE
,               // Use specific dimensions 
1974     wxPAPER_LETTER
,             // Letter, 8 1/2 by 11 inches 
1975     wxPAPER_LEGAL
,              // Legal, 8 1/2 by 14 inches 
1976     wxPAPER_A4
,                 // A4 Sheet, 210 by 297 millimeters 
1977     wxPAPER_CSHEET
,             // C Sheet, 17 by 22 inches 
1978     wxPAPER_DSHEET
,             // D Sheet, 22 by 34 inches 
1979     wxPAPER_ESHEET
,             // E Sheet, 34 by 44 inches 
1980     wxPAPER_LETTERSMALL
,        // Letter Small, 8 1/2 by 11 inches 
1981     wxPAPER_TABLOID
,            // Tabloid, 11 by 17 inches 
1982     wxPAPER_LEDGER
,             // Ledger, 17 by 11 inches 
1983     wxPAPER_STATEMENT
,          // Statement, 5 1/2 by 8 1/2 inches 
1984     wxPAPER_EXECUTIVE
,          // Executive, 7 1/4 by 10 1/2 inches 
1985     wxPAPER_A3
,                 // A3 sheet, 297 by 420 millimeters 
1986     wxPAPER_A4SMALL
,            // A4 small sheet, 210 by 297 millimeters 
1987     wxPAPER_A5
,                 // A5 sheet, 148 by 210 millimeters 
1988     wxPAPER_B4
,                 // B4 sheet, 250 by 354 millimeters 
1989     wxPAPER_B5
,                 // B5 sheet, 182-by-257-millimeter paper 
1990     wxPAPER_FOLIO
,              // Folio, 8-1/2-by-13-inch paper 
1991     wxPAPER_QUARTO
,             // Quarto, 215-by-275-millimeter paper 
1992     wxPAPER_10X14
,              // 10-by-14-inch sheet 
1993     wxPAPER_11X17
,              // 11-by-17-inch sheet 
1994     wxPAPER_NOTE
,               // Note, 8 1/2 by 11 inches 
1995     wxPAPER_ENV_9
,              // #9 Envelope, 3 7/8 by 8 7/8 inches 
1996     wxPAPER_ENV_10
,             // #10 Envelope, 4 1/8 by 9 1/2 inches 
1997     wxPAPER_ENV_11
,             // #11 Envelope, 4 1/2 by 10 3/8 inches 
1998     wxPAPER_ENV_12
,             // #12 Envelope, 4 3/4 by 11 inches 
1999     wxPAPER_ENV_14
,             // #14 Envelope, 5 by 11 1/2 inches 
2000     wxPAPER_ENV_DL
,             // DL Envelope, 110 by 220 millimeters 
2001     wxPAPER_ENV_C5
,             // C5 Envelope, 162 by 229 millimeters 
2002     wxPAPER_ENV_C3
,             // C3 Envelope, 324 by 458 millimeters 
2003     wxPAPER_ENV_C4
,             // C4 Envelope, 229 by 324 millimeters 
2004     wxPAPER_ENV_C6
,             // C6 Envelope, 114 by 162 millimeters 
2005     wxPAPER_ENV_C65
,            // C65 Envelope, 114 by 229 millimeters 
2006     wxPAPER_ENV_B4
,             // B4 Envelope, 250 by 353 millimeters 
2007     wxPAPER_ENV_B5
,             // B5 Envelope, 176 by 250 millimeters 
2008     wxPAPER_ENV_B6
,             // B6 Envelope, 176 by 125 millimeters 
2009     wxPAPER_ENV_ITALY
,          // Italy Envelope, 110 by 230 millimeters 
2010     wxPAPER_ENV_MONARCH
,        // Monarch Envelope, 3 7/8 by 7 1/2 inches 
2011     wxPAPER_ENV_PERSONAL
,       // 6 3/4 Envelope, 3 5/8 by 6 1/2 inches 
2012     wxPAPER_FANFOLD_US
,         // US Std Fanfold, 14 7/8 by 11 inches 
2013     wxPAPER_FANFOLD_STD_GERMAN
, // German Std Fanfold, 8 1/2 by 12 inches 
2014     wxPAPER_FANFOLD_LGL_GERMAN
, // German Legal Fanfold, 8 1/2 by 13 inches 
2016     wxPAPER_ISO_B4
,             // B4 (ISO) 250 x 353 mm 
2017     wxPAPER_JAPANESE_POSTCARD
,  // Japanese Postcard 100 x 148 mm 
2018     wxPAPER_9X11
,               // 9 x 11 in 
2019     wxPAPER_10X11
,              // 10 x 11 in 
2020     wxPAPER_15X11
,              // 15 x 11 in 
2021     wxPAPER_ENV_INVITE
,         // Envelope Invite 220 x 220 mm 
2022     wxPAPER_LETTER_EXTRA
,       // Letter Extra 9 \275 x 12 in 
2023     wxPAPER_LEGAL_EXTRA
,        // Legal Extra 9 \275 x 15 in 
2024     wxPAPER_TABLOID_EXTRA
,      // Tabloid Extra 11.69 x 18 in 
2025     wxPAPER_A4_EXTRA
,           // A4 Extra 9.27 x 12.69 in 
2026     wxPAPER_LETTER_TRANSVERSE
,  // Letter Transverse 8 \275 x 11 in 
2027     wxPAPER_A4_TRANSVERSE
,      // A4 Transverse 210 x 297 mm 
2028     wxPAPER_LETTER_EXTRA_TRANSVERSE
, // Letter Extra Transverse 9\275 x 12 in 
2029     wxPAPER_A_PLUS
,             // SuperA/SuperA/A4 227 x 356 mm 
2030     wxPAPER_B_PLUS
,             // SuperB/SuperB/A3 305 x 487 mm 
2031     wxPAPER_LETTER_PLUS
,        // Letter Plus 8.5 x 12.69 in 
2032     wxPAPER_A4_PLUS
,            // A4 Plus 210 x 330 mm 
2033     wxPAPER_A5_TRANSVERSE
,      // A5 Transverse 148 x 210 mm 
2034     wxPAPER_B5_TRANSVERSE
,      // B5 (JIS) Transverse 182 x 257 mm 
2035     wxPAPER_A3_EXTRA
,           // A3 Extra 322 x 445 mm 
2036     wxPAPER_A5_EXTRA
,           // A5 Extra 174 x 235 mm 
2037     wxPAPER_B5_EXTRA
,           // B5 (ISO) Extra 201 x 276 mm 
2038     wxPAPER_A2
,                 // A2 420 x 594 mm 
2039     wxPAPER_A3_TRANSVERSE
,      // A3 Transverse 297 x 420 mm 
2040     wxPAPER_A3_EXTRA_TRANSVERSE 
// A3 Extra Transverse 322 x 445 mm 
2044 /* Printing orientation */ 
2046 #define wxPORTRAIT      1 
2047 #define wxLANDSCAPE     2 
2050 /* Duplex printing modes 
2055     wxDUPLEX_SIMPLEX
, // Non-duplex 
2056     wxDUPLEX_HORIZONTAL
, 
2063 #define wxPRINT_QUALITY_HIGH    -1 
2064 #define wxPRINT_QUALITY_MEDIUM  -2 
2065 #define wxPRINT_QUALITY_LOW     -3 
2066 #define wxPRINT_QUALITY_DRAFT   -4 
2068 typedef int wxPrintQuality
; 
2070 /* Print mode (currently PostScript only) 
2075     wxPRINT_MODE_NONE 
=    0, 
2076     wxPRINT_MODE_PREVIEW 
= 1,   // Preview in external application 
2077     wxPRINT_MODE_FILE 
=    2,   // Print to file 
2078     wxPRINT_MODE_PRINTER 
= 3    // Send to printer 
2081 // ---------------------------------------------------------------------------- 
2082 // UpdateWindowUI flags 
2083 // ---------------------------------------------------------------------------- 
2087     wxUPDATE_UI_NONE          
= 0x0000, 
2088     wxUPDATE_UI_RECURSE       
= 0x0001, 
2089     wxUPDATE_UI_FROMIDLE      
= 0x0002 // Invoked from On(Internal)Idle 
2092 // ---------------------------------------------------------------------------- 
2094 // ---------------------------------------------------------------------------- 
2096 // define this macro if font handling is done using the X font names 
2097 #if (defined(__WXGTK__) && !defined(__WXGTK20__)) || defined(__X__) 
2098     #define _WX_X_FONTLIKE 
2101 // macro to specify "All Files" on different platforms 
2102 #if defined(__WXMSW__) || defined(__WXPM__) 
2103 #   define wxALL_FILES_PATTERN   wxT("*.*") 
2104 #   define wxALL_FILES           gettext_noop("All files (*.*)|*.*") 
2106 #   define wxALL_FILES_PATTERN   wxT("*") 
2107 #   define wxALL_FILES           gettext_noop("All files (*)|*") 
2110 // --------------------------------------------------------------------------- 
2111 // macros that enable wxWindows apps to be compiled in absence of the 
2112 // sytem headers, although some platform specific types are used in the 
2113 // platform specific (implementation) parts of the headers 
2114 // --------------------------------------------------------------------------- 
2118 typedef unsigned char WXCOLORREF
[6]; 
2119 typedef void*       WXHBITMAP
; 
2120 typedef void*       WXHMETAFILE
; 
2121 typedef void*       WXHICON
; 
2122 typedef void*       WXHCURSOR
; 
2123 typedef void*       WXHRGN
; 
2124 typedef void*       WXRECTPTR
; 
2125 typedef void*       WXPOINTPTR
; 
2126 typedef void*       WXHWND
; 
2127 typedef void*       WXEVENTREF
; 
2128 typedef void*       WXEVENTHANDLERREF
; 
2129 typedef void*       WXEVENTHANDLERCALLREF
; 
2130 typedef void*       WXAPPLEEVENTREF
; 
2131 typedef void*       WXHDC
; 
2132 typedef void*       WXHMENU
; 
2133 typedef unsigned int    WXUINT
; 
2134 typedef unsigned long   WXDWORD
; 
2135 typedef unsigned short  WXWORD
; 
2137 typedef void*       WXWidget
; 
2138 typedef void*       WXWindow
; 
2139 typedef void*       WXDisplay
; 
2141 typedef WindowPtr       WXHWND; 
2142 typedef Handle          WXHANDLE; 
2143 typedef CIconHandle     WXHICON; 
2144 //typedef unsigned long   WXHFONT; 
2145 typedef MenuHandle      WXHMENU; 
2146 //typedef unsigned long   WXHPEN; 
2147 //typedef unsigned long   WXHBRUSH; 
2148 //typedef unsigned long   WXHPALETTE; 
2149 typedef CursHandle      WXHCURSOR; 
2150 typedef RgnHandle       WXHRGN; 
2151 //typedef unsigned long   WXHACCEL; 
2152 //typedef unsigned long   WXHINSTANCE; 
2153 //typedef unsigned long   WXHIMAGELIST; 
2154 //typedef unsigned long   WXHGLOBAL; 
2155 typedef GrafPtr         WXHDC; 
2156 //typedef unsigned int    WXWPARAM; 
2157 //typedef long            WXLPARAM; 
2158 //typedef void *          WXRGNDATA; 
2159 //typedef void *          WXMSG; 
2160 //typedef unsigned long   WXHCONV; 
2161 //typedef unsigned long   WXHKEY; 
2162 //typedef void *          WXDRAWITEMSTRUCT; 
2163 //typedef void *          WXMEASUREITEMSTRUCT; 
2164 //typedef void *          WXLPCREATESTRUCT; 
2165 typedef int (*WXFARPROC)(); 
2167 typedef WindowPtr       WXWindow; 
2168 typedef ControlHandle   WXWidget; 
2174 // NOTE: This ought to work with other compilers too, but I'm being cautious 
2175 #if (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__) 
2176 /* It's desirable to have type safety for Objective-C(++) code as it does 
2177 at least catch typos of method names among other things.  However, it 
2178 is not possible to declare an Objective-C class from plain old C or C++ 
2179 code.  Furthermore, because of C++ name mangling, the type name must 
2180 be the same for both C++ and Objective-C++ code.  Therefore, we define 
2181 what should be a pointer to an Objective-C class as a pointer to a plain 
2182 old C struct with the same name.  Unfortunately, because the compiler 
2183 does not see a struct as an Objective-C class we cannot declare it 
2184 as a struct in Objective-C(++) mode. 
2186 #if defined(__OBJC__) 
2187 #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ 
2189 typedef klass *WX_##klass 
2190 #else // not defined(__OBJC__) 
2191 #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ 
2192 typedef struct klass *WX_##klass 
2193 #endif // defined(__OBJC__) 
2195 #else // not Apple's GNU or CodeWarrior 
2196 #warning "Objective-C types will not be checked by the compiler." 
2197 // NOTE: typedef struct objc_object *id; 
2198 // IOW, we're declaring these using the id type without using that name, 
2199 // since "id" is used extensively not only within wxWindows itself, but 
2200 // also in wxWindows application code.  The following works fine when 
2201 // compiling C(++) code, and works without typesafety for Obj-C(++) code 
2202 #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ 
2203 typedef struct objc_object *WX_##klass 
2205 #endif // (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__) 
2207 DECLARE_WXCOCOA_OBJC_CLASS(NSApplication
); 
2208 DECLARE_WXCOCOA_OBJC_CLASS(NSBitmapImageRep
); 
2209 DECLARE_WXCOCOA_OBJC_CLASS(NSBox
); 
2210 DECLARE_WXCOCOA_OBJC_CLASS(NSButton
); 
2211 DECLARE_WXCOCOA_OBJC_CLASS(NSColor
); 
2212 DECLARE_WXCOCOA_OBJC_CLASS(NSControl
); 
2213 DECLARE_WXCOCOA_OBJC_CLASS(NSEvent
); 
2214 DECLARE_WXCOCOA_OBJC_CLASS(NSImage
); 
2215 DECLARE_WXCOCOA_OBJC_CLASS(NSLayoutManager
); 
2216 DECLARE_WXCOCOA_OBJC_CLASS(NSMenu
); 
2217 DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem
); 
2218 DECLARE_WXCOCOA_OBJC_CLASS(NSMutableArray
); 
2219 DECLARE_WXCOCOA_OBJC_CLASS(NSNotification
); 
2220 DECLARE_WXCOCOA_OBJC_CLASS(NSPanel
); 
2221 DECLARE_WXCOCOA_OBJC_CLASS(NSScrollView
); 
2222 DECLARE_WXCOCOA_OBJC_CLASS(NSTableColumn
); 
2223 DECLARE_WXCOCOA_OBJC_CLASS(NSTableView
); 
2224 DECLARE_WXCOCOA_OBJC_CLASS(NSTextContainer
); 
2225 DECLARE_WXCOCOA_OBJC_CLASS(NSTextField
); 
2226 DECLARE_WXCOCOA_OBJC_CLASS(NSTextStorage
); 
2227 DECLARE_WXCOCOA_OBJC_CLASS(NSThread
); 
2228 DECLARE_WXCOCOA_OBJC_CLASS(NSWindow
); 
2229 DECLARE_WXCOCOA_OBJC_CLASS(NSView
); 
2230 typedef WX_NSView WXWidget
; // wxWindows BASE definition 
2231 #endif // __WXCOCOA__ 
2233 #if defined(__WXMSW__) || defined(__WXPM__) 
2235 // the keywords needed for WinMain() declaration 
2238 #    define WXFAR __far 
2248 // Stand-ins for Windows types or OS/2, to avoid #including all of windows.h or os2.h 
2249 typedef unsigned long   WXHWND
; 
2250 typedef unsigned long   WXHANDLE
; 
2251 typedef unsigned long   WXHICON
; 
2252 typedef unsigned long   WXHFONT
; 
2253 typedef unsigned long   WXHMENU
; 
2254 typedef unsigned long   WXHPEN
; 
2255 typedef unsigned long   WXHBRUSH
; 
2256 typedef unsigned long   WXHPALETTE
; 
2257 typedef unsigned long   WXHCURSOR
; 
2258 typedef unsigned long   WXHRGN
; 
2259 typedef unsigned long   WXHACCEL
; 
2260 typedef void WXFAR  
*   WXHINSTANCE
; 
2261 typedef unsigned long   WXHBITMAP
; 
2262 typedef unsigned long   WXHIMAGELIST
; 
2263 typedef unsigned long   WXHGLOBAL
; 
2264 typedef unsigned long   WXHDC
; 
2265 typedef unsigned int    WXUINT
; 
2266 typedef unsigned long   WXDWORD
; 
2267 typedef unsigned short  WXWORD
; 
2269 typedef unsigned long   WXCOLORREF
; 
2270 typedef void *          WXRGNDATA
; 
2271 typedef void *          WXMSG
; 
2272 typedef unsigned long   WXHCONV
; 
2273 typedef unsigned long   WXHKEY
; 
2274 typedef unsigned long   WXHTREEITEM
; 
2276 typedef void *          WXDRAWITEMSTRUCT
; 
2277 typedef void *          WXMEASUREITEMSTRUCT
; 
2278 typedef void *          WXLPCREATESTRUCT
; 
2280 typedef WXHWND          WXWidget
; 
2282 #endif // MSW or OS2 
2286 typedef unsigned int    WXWPARAM
; 
2287 typedef long            WXLPARAM
; 
2289 #if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXMICROWIN__) 
2290 typedef int             (*WXFARPROC
)(); 
2292 typedef int             (__stdcall 
*WXFARPROC
)(); 
2297 #if defined(__WXPM__) || defined(__EMX__) 
2299 /* Need a well-known type for WXFARPROC 
2300    below. MPARAM is typedef'ed too late. */ 
2301 #define WXWPARAM        void * 
2302 #define WXLPARAM        void * 
2304 #define WXWPARAM        MPARAM 
2305 #define WXLPARAM        MPARAM 
2308 #define LOGFONT         FATTRS 
2309 #define LOWORD          SHORT1FROMMP 
2310 #define HIWORD          SHORT2FROMMP 
2312 typedef unsigned long   WXMPARAM
; 
2313 typedef unsigned long   WXMSGID
; 
2314 typedef void*           WXRESULT
; 
2315 //typedef int             (*WXFARPROC)(); 
2316 // some windows handles not defined by PM 
2317 typedef unsigned long   HANDLE
; 
2318 typedef unsigned long   HICON
; 
2319 typedef unsigned long   HFONT
; 
2320 typedef unsigned long   HMENU
; 
2321 typedef unsigned long   HPEN
; 
2322 typedef unsigned long   HBRUSH
; 
2323 typedef unsigned long   HPALETTE
; 
2324 typedef unsigned long   HCURSOR
; 
2325 typedef unsigned long   HINSTANCE
; 
2326 typedef unsigned long   HIMAGELIST
; 
2327 typedef unsigned long   HGLOBAL
; 
2328 typedef unsigned long   DWORD
; 
2329 typedef unsigned short  WORD
; 
2330 #endif // WXPM || EMX 
2332 #if defined (__WXPM__) 
2333 // WIN32 graphics types for OS/2 GPI 
2335 // RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def 
2336 // WARNING: The OS/2 headers typedef BYTE simply as 'char'; if the default is signed, all 
2337 // hell will break loose! 
2338 //#define OS2RGB(r,g,b) ((DWORD ((BYTE) (b) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(r)) << 16))) 
2339 #define OS2RGB(r,g,b) ((DWORD)((unsigned char)(b) | ((unsigned char)(g) << 8)) | ((unsigned char)(r) << 16)) 
2341 typedef unsigned long COLORREF
; 
2342 #define GetBValue(rgb) ((BYTE)((rgb) >> 16)) 
2343 #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) 
2344 #define GetRValue(rgb) ((BYTE)(rgb)) 
2345 #define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i))) 
2346 #define PALETTERGB(r,g,b) (0x02000000 | OS2RGB(r,g,b)) 
2347 // OS2's RGB/RGB2 is backwards from this 
2348 typedef struct tagPALETTEENTRY
 
2355 typedef struct tagLOGPALETTE
 
2359     WORD PALETTEENTRY
[1]; 
2362 #if (defined(__VISAGECPP__) && (__IBMCPP__ < 400)) || defined (__WATCOMC__) 
2363     // VA 3.0 for some reason needs base data types when typedefing a proc proto??? 
2364 typedef void* (_System 
*WXFARPROC
)(unsigned long, unsigned long, void*, void*); 
2369 typedef WXRESULT (_System 
*WXFARPROC
)(WXHWND
, WXMSGID
, WXWPARAM
, WXLPARAM
); 
2375 #if defined(__WXMOTIF__) || defined(__WXX11__) 
2376 /* Stand-ins for X/Xt/Motif types */ 
2377 typedef void*           WXWindow
; 
2378 typedef void*           WXWidget
; 
2379 typedef void*           WXAppContext
; 
2380 typedef void*           WXColormap
; 
2381 typedef void*           WXColor
; 
2382 typedef void            WXDisplay
; 
2383 typedef void            WXEvent
; 
2384 typedef void*           WXCursor
; 
2385 typedef void*           WXPixmap
; 
2386 typedef void*           WXFontStructPtr
; 
2388 typedef void*           WXRegion
; 
2389 typedef void*           WXFont
; 
2390 typedef void*           WXImage
; 
2391 typedef void*           WXFontList
; 
2392 typedef void*           WXRendition
; 
2393 typedef void*           WXRenderTable
; 
2394 typedef void*           WXFontType
; /* either a XmFontList or XmRenderTable */ 
2395 typedef void*           WXString
; 
2397 typedef unsigned long   Atom
;  /* this might fail on a few architectures */ 
2403 /* Stand-ins for GLIB types */ 
2405 typedef signed char    gint8
; 
2407 typedef unsigned       guint
; 
2408 typedef unsigned long  gulong
; 
2409 typedef void*          gpointer
; 
2410 typedef struct _GSList GSList
; 
2412 /* Stand-ins for GDK types */ 
2413 typedef struct _GdkColor        GdkColor
; 
2414 typedef struct _GdkColormap     GdkColormap
; 
2415 typedef struct _GdkFont         GdkFont
; 
2416 typedef struct _GdkGC           GdkGC
; 
2417 typedef struct _GdkVisual       GdkVisual
; 
2420 typedef struct _GdkAtom        
*GdkAtom
; 
2421 typedef struct _GdkDrawable     GdkWindow
; 
2422 typedef struct _GdkDrawable     GdkBitmap
; 
2423 typedef struct _GdkDrawable     GdkPixmap
; 
2425 typedef gulong                  GdkAtom
; 
2426 typedef struct _GdkWindow       GdkWindow
; 
2427 typedef struct _GdkWindow       GdkBitmap
; 
2428 typedef struct _GdkWindow       GdkPixmap
; 
2429 #endif // GTK+ 1.2/2.0 
2431 typedef struct _GdkCursor       GdkCursor
; 
2432 typedef struct _GdkRegion       GdkRegion
; 
2433 typedef struct _GdkDragContext  GdkDragContext
; 
2436 typedef struct _GdkIC           GdkIC
; 
2437 typedef struct _GdkICAttr       GdkICAttr
; 
2440 /* Stand-ins for GTK types */ 
2441 typedef struct _GtkWidget         GtkWidget
; 
2442 typedef struct _GtkStyle          GtkStyle
; 
2443 typedef struct _GtkAdjustment     GtkAdjustment
; 
2444 typedef struct _GtkList           GtkList
; 
2445 typedef struct _GtkToolbar        GtkToolbar
; 
2446 typedef struct _GtkTooltips       GtkTooltips
; 
2447 typedef struct _GtkNotebook       GtkNotebook
; 
2448 typedef struct _GtkNotebookPage   GtkNotebookPage
; 
2449 typedef struct _GtkAccelGroup     GtkAccelGroup
; 
2450 typedef struct _GtkItemFactory    GtkItemFactory
; 
2451 typedef struct _GtkSelectionData  GtkSelectionData
; 
2453 typedef GtkWidget 
*WXWidget
; 
2456 #define GTK_OBJECT_GET_CLASS(object) (GTK_OBJECT(object)->klass) 
2457 #define GTK_CLASS_TYPE(klass) ((klass)->type) 
2461 /* Input method thing */ 
2462 typedef struct _GtkIMMulticontext    GtkIMMulticontext
; 
2463 #endif // __WXGTK20__ 
2467 #if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE) 
2468 #define wxUSE_PANGO 1 
2470 #define wxUSE_PANGO 0 
2474 /* Stand-ins for Pango types */ 
2475 typedef struct _PangoContext         PangoContext
; 
2476 typedef struct _PangoLayout          PangoLayout
; 
2477 typedef struct _PangoFontDescription PangoFontDescription
; 
2481 typedef struct window_t 
*WXWidget
; 
2484 // This is required because of clashing macros in windows.h, which may be 
2485 // included before or after wxWindows classes, and therefore must be 
2486 // disabled here before any significant wxWindows headers are included. 
2518 // --------------------------------------------------------------------------- 
2519 // macro to define a class without copy ctor nor assignment operator 
2520 // --------------------------------------------------------------------------- 
2522 #define DECLARE_NO_COPY_CLASS(classname)        \ 
2524         classname(const classname&);            \ 
2525         classname& operator=(const classname&); 
2527 #define DECLARE_NO_ASSIGN_CLASS(classname)      \ 
2529         classname& operator=(const classname&);