]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
Moved the cleanup code to an EVT_WINDOW_DESTROY handler.
[wxWidgets.git] / include / wx / defs.h
index 7d367a5f6d353367ba4508d58148c007b1145c47..a3ea865ebd1303bc6f23c338a825df7e5aae09bf 100644 (file)
@@ -35,6 +35,9 @@
 #endif // Unix/!Unix
 #endif
 
+// include the feature test macros
+#include "wx/features.h"
+
 // suppress some Visual C++ warnings
 #ifdef __VISUALC__
 #   pragma warning(disable:4201)    // nonstandard extension used: nameless struct/union
 // check for native bool type and TRUE/FALSE constants
 // ----------------------------------------------------------------------------
 
-// define boolean constants if not done yet
-#ifndef TRUE
-    #define TRUE  1
-#endif
-
-#ifndef FALSE
-    #define FALSE 0
-#endif
-
 // Add more tests here for Windows compilers that already define bool
 // (under Unix, configure tests for this)
 #ifndef HAVE_BOOL
     // NB: of course, this doesn't replace the standard type, because, for
     //     example, overloading based on bool/int parameter doesn't work and
     //     so should be avoided in portable programs
-typedef unsigned int bool;
+    typedef unsigned int bool;
 #endif // bool
 
+#ifdef __cplusplus
+    // define boolean constants: don't use true/false here as not all compilers
+    // support them
+    #undef TRUE
+    #undef FALSE
+    #define TRUE  ((bool)1)
+    #define FALSE ((bool)0)
+#else // !__cplusplus
+    // the definitions above don't work for C sources
+    #ifndef TRUE
+        #define TRUE 1
+    #endif
+
+    #ifndef FALSE
+        #define FALSE 0
+    #endif
+#endif // C++/!C++
+
 typedef short int WXTYPE;
 
 // special care should be taken with this type under Windows where the real
@@ -193,17 +205,16 @@ typedef int wxWindowID;
 // other feature tests
 // ----------------------------------------------------------------------------
 
-    // Every ride down a slippery slope begins with a single step..
-    //
-    // Yes, using nested classes is indeed against our coding standards in
-    // general, but there are places where you can use them to advantage
-    // without totally breaking ports that cannot use them.  If you do, then
-    // wrap it in this guard, but such cases should still be relatively rare.
-
+// Every ride down a slippery slope begins with a single step..
+//
+// Yes, using nested classes is indeed against our coding standards in
+// general, but there are places where you can use them to advantage
+// without totally breaking ports that cannot use them.  If you do, then
+// wrap it in this guard, but such cases should still be relatively rare.
 #ifndef __WIN16__
-#define wxUSE_NESTED_CLASSES    1
+    #define wxUSE_NESTED_CLASSES    1
 #else
-#define wxUSE_NESTED_CLASSES    0
+    #define wxUSE_NESTED_CLASSES    0
 #endif
 
 // ----------------------------------------------------------------------------
@@ -468,17 +479,43 @@ enum
 #define wxInt8    char    signed
 #define wxUint8   char  unsigned
 
-#if defined(__WIN16__) || (defined(SIZEOF_INT) && (SIZEOF_INT == 2))
-#define wxInt16    int    signed
-#define wxUint16   int  unsigned
-#define wxInt32   long    signed
-#define wxUint32  long  unsigned
-#else
-#define wxInt16  short    signed
-#define wxUint16 short  unsigned
-#define wxInt32    int    signed
-#define wxUint32   int  unsigned
-#endif
+#ifdef __WINDOWS__
+    #if defined(__WIN16__)
+        #define wxInt16    int    signed
+        #define wxUint16   int  unsigned
+        #define wxInt32   long    signed
+        #define wxUint32  long  unsigned
+    #elif defined(__WIN32__)
+        #define wxInt16  short    signed
+        #define wxUint16 short  unsigned
+        #define wxInt32    int    signed
+        #define wxUint32   int  unsigned
+    #else
+        // Win64 will have different type sizes
+        #error "Please define a 32 bit type"
+    #endif
+#else // !Windows
+    // SIZEOF_XXX are defined by configure
+    #if defined(SIZEOF_INT) && (SIZEOF_INT == 4)
+        #define wxInt16  short    signed
+        #define wxUint16 short  unsigned
+        #define wxInt32    int    signed
+        #define wxUint32   int  unsigned
+    #elif defined(SIZEOF_INT) && (SIZEOF_INT == 2)
+        #define wxInt16    int    signed
+        #define wxUint16   int  unsigned
+        #define wxInt32   long    signed
+        #define wxUint32  long  unsigned
+    #else
+        // assume sizeof(int) == 4 - what else can we do
+        wxCOMPILE_TIME_ASSERT( sizeof(int) == 4, IntMustBeExactly4Bytes);
+
+        #define wxInt16  short    signed
+        #define wxUint16 short  unsigned
+        #define wxInt32    int    signed
+        #define wxUint32   int  unsigned
+    #endif
+#endif // Win/!Win
 
 #if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
 #define wxInt64   long    signed
@@ -945,17 +982,6 @@ enum wxBorder
 #   define wxEXT_DIALOG_STYLE  (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN|wxED_STATIC_LINE)
 #endif
 
-/*
- * wxToolBar style flags
- */
-#define wxTB_HORIZONTAL         wxHORIZONTAL
-#define wxTB_VERTICAL           wxVERTICAL
-#define wxTB_3DBUTTONS          0x0010
-// Flatbar/Coolbar under Win98/ GTK 1.2
-#define wxTB_FLAT               0x0020
-// use native docking under GTK
-#define wxTB_DOCKABLE           0x0040
-
 /*
  * wxMenuBar style flags
  */
@@ -1096,6 +1122,17 @@ enum wxBorder
 #define wxTC_OWNERDRAW        0x0040
 #define wxTC_MULTILINE        wxNB_MULTILINE
 
+// wxToolBar style flags
+#define wxTB_HORIZONTAL     wxHORIZONTAL    // == 0x0004
+#define wxTB_VERTICAL       wxVERTICAL      // == 0x0008
+#define wxTB_3DBUTTONS      0x0010
+#define wxTB_FLAT           0x0020          // supported only under Win98+/GTK
+#define wxTB_DOCKABLE       0x0040          // use native docking under GTK
+#define wxTB_NOICONS        0x0080          // don't show the icons
+#define wxTB_TEXT           0x0100          // show the text
+#define wxTB_NODIVIDER      0x0200          // don't show the divider (Windows)
+#define wxTB_NOALIGN        0x0400          // no automatic alignment (Windows)
+
 /*
  * wxStatusBar95 flags
  */
@@ -1130,6 +1167,12 @@ enum wxBorder
 // be modal. No progress will then be made at all.
 #define wxPD_REMAINING_TIME     0x0040
 
+/*
+ * wxDirDialog styles
+ */
+
+#define wxDD_NEW_DIR_BUTTON     0x0080
+
 /*
  * extended dialog specifiers. these values are stored in a different
  * flag and thus do not overlap with other style flags. note that these
@@ -1250,6 +1293,16 @@ enum wxBorder
 // constants
 // ----------------------------------------------------------------------------
 
+// menu and toolbar item kinds
+enum wxItemKind
+{
+    wxITEM_SEPARATOR = -1,
+    wxITEM_NORMAL,
+    wxITEM_CHECK,
+    wxITEM_RADIO,
+    wxITEM_MAX
+};
+
 // hit test results
 enum wxHitTest
 {
@@ -1410,6 +1463,7 @@ enum wxDataFormatId
     wxDF_FILENAME =         15, /* CF_HDROP */
     wxDF_LOCALE =           16,
     wxDF_PRIVATE =          20,
+    wxDF_HTML =             30, /* Note: does not correspond to CF_ constant */
     wxDF_MAX
 };
 
@@ -1436,8 +1490,8 @@ enum wxKeyCode
   WXK_MENU,
   WXK_PAUSE,
   WXK_CAPITAL,
-  WXK_PRIOR,  /* Page up */
-  WXK_NEXT,   /* Page down */
+  WXK_PRIOR,  // Page up
+  WXK_NEXT,   // Page down
   WXK_END,
   WXK_HOME,
   WXK_LEFT,