typo corrected
[wxWidgets.git] / include / wx / defs.h
CommitLineData
c801d85f
KB
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$
8// Copyright: (c)
3f4a0c5b 9// Licence: wxWindows licence
c801d85f
KB
10/////////////////////////////////////////////////////////////////////////////
11
34138703
JS
12#ifndef _WX_DEFS_H_
13#define _WX_DEFS_H_
c801d85f
KB
14
15#ifdef __GNUG__
16#pragma interface "defs.h"
17#endif
18
c801d85f
KB
19#include <stddef.h>
20
21#include "wx/setup.h"
22#include "wx/version.h"
23
3f4a0c5b
VZ
24// ----------------------------------------------------------------------------
25// compiler and OS identification
26// ----------------------------------------------------------------------------
c801d85f 27
3f4a0c5b 28// OS
5b34447b
VZ
29#if defined(__unix) || defined(__unix__) || defined(____SVR4____) || \
30 defined(__LINUX__) || defined(__sgi ) || \
31 defined(__hpux) || defined(sun) || defined(__SUN__)
32
3f4a0c5b
VZ
33 #ifndef __UNIX__
34 #define __UNIX__
35 #endif // Unix
36
37 // Helps SGI compilation, apparently
38 #ifdef __SGI__
39 #ifdef __GNUG__
40 #define __need_wchar_t
41 #else // !gcc
42 // Note I use the term __SGI_CC__ for both cc and CC, its not a good
43 // idea to mix gcc and cc/CC, the name mangling is different
44 #define __SGI_CC__
45 #endif // gcc/!gcc
46 #endif // SGI
47
48 #if defined(sun) || defined(__SUN__)
49 #ifndef __GNUG__
50 #ifndef __SUNCC__
51 #define __SUNCC__
52 #endif // Sun CC
53 #endif
54 #endif // Sun
5b34447b
VZ
55
56 #ifdef __hpux
57 #define __HPUX__
58 #endif // HP-UX
59
8be97d65 60#elif defined(applec) || defined(THINK_C) || ( defined( __MWERKS__ ) && !defined(__INTEL__) )
5b34447b 61 // MacOS
3f4a0c5b
VZ
62#else // Windows
63 #ifndef __WINDOWS__
64 #define __WINDOWS__
65 #endif // Windows
66
67 // define another standard symbol for Microsoft Visual C++: the standard one
68 // (_MSC_VER) is also defined by Metrowerks compiler
69 #if defined(_MSC_VER) && !defined(__MWERKS__)
858f7d66 70 #define __VISUALC__ _MSC_VER
3f4a0c5b
VZ
71 #elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__)
72 #define __BORLANDC__
73 #elif defined(__WATCOMC__)
74 //#define __WATCOMC__
75 #elif defined(__SC__)
76 #define __SYMANTECC__
77 #endif // compiler
78#endif // OS
5dcf05ae 79
fd3f686c 80// suppress some Visual C++ warnings
3f4a0c5b 81#ifdef __VISUALC__
539dae52 82# pragma warning(disable:4244) // conversion from double to float
fd3f686c 83# pragma warning(disable:4100) // unreferenced formal parameter
539dae52 84#endif // __VISUALC__
c801d85f 85
a3ef5bf5
JS
86// suppress some Salford C++ warnings
87#ifdef __SALFORDC__
88# pragma suppress 353 // Possible nested comments
89# pragma suppress 593 // Define not used
90# pragma suppress 61 // enum has no name (doesn't suppress!)
91# pragma suppress 106 // unnamed, unused parameter
92# pragma suppress 571 // Virtual function hiding
539dae52
VZ
93#endif // __SALFORDC__
94
95// Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files,
e3f39499 96// so define it ourselves
539dae52
VZ
97#ifdef __DECCXX
98 #define __cplusplus
99#endif // __DECCXX
a3ef5bf5 100
e3f39499 101// Resolves linking problems under HP-UX
5b34447b 102#if defined(__HPUX__) && defined(__GNUG__)
e3f39499
VZ
103 #define va_list __gnuc_va_list
104#endif // HP-UX
105
c801d85f
KB
106//////////////////////////////////////////////////////////////////////////////////
107// Currently Only MS-Windows/NT, XView and Motif are supported
108//
2049ba38
KB
109#if defined(__HPUX__) && !defined(__WXMOTIF__)
110# define __WXMOTIF__
c801d85f 111#endif
2049ba38 112#if defined(__WXMOTIF__)
c801d85f 113# define __X__
c801d85f
KB
114#endif
115
16ee7f42 116#ifdef __WXMSW__
c801d85f 117// wxWindows checks for WIN32, not __WIN32__
34138703 118#if ((defined(WIN32) || defined(__NT__)) && !defined(__WIN32__) && !defined(__WXSTUBS__))
c801d85f
KB
119#define __WIN32__
120#endif
121
122#ifndef __WIN32__
123#define __WIN16__
124#endif
125
126#if !defined(__WIN95__) && (WINVER >= 0x0400)
127#define __WIN95__
128#endif
129
57c208c5
JS
130#if defined(TWIN32) && !defined(__TWIN32__)
131#define __TWIN32__
132#endif
133
16ee7f42
VZ
134#endif // wxMSW
135
c801d85f 136// Make sure the environment is set correctly
2049ba38 137#if defined(__WXMSW__) && defined(__X__)
ba6f401d 138 #error "Target can't be both X and Windows"
b4e76e0d 139#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \
34138703 140 !defined(__WXMAC__) && !defined(__X__) && !defined(__WXQT__) && !defined(__WXSTUBS__)
ba6f401d 141 #error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXSTUBS__]"
c801d85f
KB
142#endif
143
34138703 144#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || defined(__WXSTUBS__)
ba6f401d
VZ
145 // Bool is now obsolete, use bool instead
146 // typedef int Bool;
c801d85f 147
ba6f401d
VZ
148 #ifndef TRUE
149 #define TRUE 1
150 #define FALSE 0
151 #define Bool_DEFINED
152 #endif
2049ba38 153#elif defined(__WXMSW__)
ba6f401d
VZ
154 #ifndef TRUE
155 #define TRUE 1
156 #define FALSE 0
157 #endif
158#endif // TRUE/FALSE
c801d85f
KB
159
160// VC++ 4.0 is 1000.
161
162// Add more tests here for compilers that don't already define bool.
9ac65416
SC
163#if defined( __MWERKS__ )
164 #if (__MWERKS__ < 0x1000) || !__option(bool)
165 typedef unsigned int bool;
166 #endif
2432b92d
JS
167#elif defined(__SC__)
168 typedef unsigned int bool;
a3ef5bf5
JS
169#elif defined(__SALFORDC__)
170 typedef unsigned int bool;
3f4a0c5b 171#elif defined(__VISUALC__) && (__VISUALC__ <= 1000)
dc9e1e56 172 typedef unsigned int bool;
3f4a0c5b 173#elif defined(__VISUALC__) && (__VISUALC__ == 1020)
dc9e1e56
VZ
174 #define bool unsigned int
175#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
176 typedef unsigned int bool;
7be1f0d9 177#elif defined(__WATCOMC__)
ba6f401d
VZ
178 #if (__WATCOMC__ < 1100)
179 typedef unsigned int bool;
180 #endif
de8113d9 181#elif defined(__SUNCC__) || defined(__SUNPRO_CC)
e0543d2a 182 #ifdef __SUNPRO_CC
6c82a1fd 183 // starting from version 5.0 Sun CC understands 'bool'
e0543d2a 184 #if __SUNPRO_CC <= 0x0420
6c82a1fd
VZ
185 // If we use int, we get identically overloaded functions in config.cpp
186 typedef unsigned char bool;
187 #endif // Sun CC version
188 #else
1f112209 189 #error "Unknown compiler: only Sun's CC and gcc are currently recognised."
6c82a1fd 190 #endif // Sun CC
ba6f401d
VZ
191#elif defined(__SGI_CC__)
192 // test is taken from SGI "C++ Programming Guide"
193 #ifndef _BOOL
194 typedef unsigned char bool;
195 #endif // _BOOL
c801d85f
KB
196#endif
197
57c208c5 198typedef unsigned char wxByte;
c801d85f
KB
199typedef short int WXTYPE;
200typedef int wxWindowID;
201
202// Macro to cut down on compiler warnings.
203#if REMOVE_UNUSED_ARG
204#define WXUNUSED(identifier) /* identifier */
205#else // stupid, broken compiler
206#define WXUNUSED(identifier) identifier
207#endif
208
209/*
210 * Making or using wxWindows as a Windows DLL
211 */
212
2049ba38 213#ifdef __WXMSW__
c801d85f 214
aed0ed3c 215/*
c801d85f
KB
216#ifdef __BORLANDC__
217
218# ifdef WXMAKINGDLL
219# define WXDLLEXPORT __export
220# define WXDLLEXPORT_DATA(type) type __export
221# define WXDLLEXPORT_CTORFN __export
222# elif defined(WXUSINGDLL)
223# define WXDLLEXPORT __import
224# define WXDLLEXPORT_DATA(type) type __import
225# define WXDLLEXPORT_CTORFN
226# else
227# define WXDLLEXPORT
228# define WXDLLEXPORT_DATA(type) type
229# define WXDLLEXPORT_CTORFN
230# endif
231
232#else
aed0ed3c
JS
233*/
234
235// _declspec works in BC++ 5 and later, as well as VC++
236#if defined(__VISUALC__) || defined(__BORLANDC__)
c801d85f
KB
237
238# ifdef WXMAKINGDLL
aed0ed3c
JS
239# define WXDLLEXPORT _declspec( dllexport )
240# define WXDLLEXPORT_DATA(type) _declspec( dllexport ) type
241# define WXDLLEXPORT_CTORFN
c801d85f 242# elif defined(WXUSINGDLL)
aed0ed3c
JS
243# define WXDLLEXPORT _declspec( dllimport )
244# define WXDLLEXPORT_DATA(type) _declspec( dllimport ) type
c801d85f
KB
245# define WXDLLEXPORT_CTORFN
246# else
247# define WXDLLEXPORT
248# define WXDLLEXPORT_DATA(type) type
249# define WXDLLEXPORT_CTORFN
250# endif
251
aed0ed3c
JS
252#else
253# define WXDLLEXPORT
254# define WXDLLEXPORT_DATA(type) type
255# define WXDLLEXPORT_CTORFN
c801d85f
KB
256#endif
257
258#else
259// Non-Windows
260# define WXDLLEXPORT
261# define WXDLLEXPORT_DATA(type) type
262# define WXDLLEXPORT_CTORFN
263#endif
264
265// For ostream, istream ofstream
266#if defined(__BORLANDC__) && defined( _RTLDLL )
267# define WXDLLIMPORT __import
268#else
269# define WXDLLIMPORT
270#endif
271
272class WXDLLEXPORT wxObject;
273class WXDLLEXPORT wxEvent;
274
c86f1403 275 /** symbolic constant used by all Find()-like functions returning positive
c801d85f 276 integer on success as failure indicator */
3c67202d 277#define wxNOT_FOUND (-1)
c801d85f
KB
278
279// ----------------------------------------------------------------------------
280// Error codes
281// ----------------------------------------------------------------------------
282
57c208c5
JS
283#ifdef ERR_PARAM
284#undef ERR_PARAM
285#endif
286
c801d85f
KB
287/// Standard error codes
288enum ErrCode
289{
290 /// invalid parameter (in broad sense)
291 ERR_PARAM = (-4000),
292 /// no more data (iteration functions usually return this)
293 ERR_NODATA,
294 /// user cancelled the operation
295 ERR_CANCEL,
296 /// no error (the only non negative error code)
297 ERR_SUCCESS = 0
298};
299
300// ----------------------------------------------------------------------------
301/** @name Very common macros */
302// ----------------------------------------------------------------------------
303//@{
a3622daa
VZ
304/// delete pointer if it is not NULL and NULL it afterwards
305// (checking that it's !NULL before passing it to delete is just a
306// a question of style, because delete will do it itself anyhow, but it might
307// be considered as an error by some overzealous debugging implementations of
308// the library, so we do it ourselves)
c67daf87 309#if defined(__SGI_CC__)
d4b67f95 310// Okay this is bad styling, but the native SGI compiler is very picky, it
c67daf87 311// wont let you compare/assign between a NULL (void *) and another pointer
d4b67f95
RD
312// type. To be really clean we'd need to pass in another argument, the type
313// of p.
314// Also note the use of 0L, this would allow future possible 64bit support
315// (as yet untested) by ensuring that we zero all the bits in a pointer
316// (which is always the same length as a long (at least with the LP64 standard)
c67daf87 317// --- offer aug 98
d8260b2f 318#define wxDELETE(p) if ( (p) ) { delete (p); p = 0L; }
c67daf87 319#else
d8260b2f 320#define wxDELETE(p) if ( (p) != NULL ) { delete p; p = NULL; }
c67daf87 321#endif /* __SGI__CC__ */
a3622daa
VZ
322
323// delete an array and NULL it (see comments above)
c67daf87
UR
324#if defined(__SGI_CC__)
325// see above comment.
326#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = 0L; }
327#else
d8260b2f 328#define wxDELETEA(p) if ( ((void *) (p)) != NULL ) { delete [] p; p = NULL; }
c67daf87 329#endif /* __SGI__CC__ */
c801d85f
KB
330
331/// size of statically declared array
332#define WXSIZEOF(array) (sizeof(array)/sizeof(array[0]))
333
8cb50e4b
JS
334// Use of these suppresses some compiler warnings
335WXDLLEXPORT_DATA(extern const bool) wxTrue;
336WXDLLEXPORT_DATA(extern const bool) wxFalse;
337
c801d85f
KB
338// ----------------------------------------------------------------------------
339// compiler specific settings
340// ----------------------------------------------------------------------------
341
342// to allow compiling with warning level 4 under Microsoft Visual C++ some
343// warnings just must be disabled
344#ifdef __VISUALC__
345 #pragma warning(disable: 4514) // unreferenced inline func has been removed
d4b67f95 346/*
c801d85f 347 you might be tempted to disable this one also: triggered by CHECK and FAIL
3f4a0c5b
VZ
348 macros in debug.h, but it's, overall, a rather useful one, so I leave it and
349 will try to find some way to disable this warning just for CHECK/FAIL. Anyone?
c801d85f
KB
350*/
351 #pragma warning(disable: 4127) // conditional expression is constant
c801d85f
KB
352#endif // VC++
353
3f4a0c5b
VZ
354#if defined(__MWERKS__)
355 #undef try
356 #undef except
357 #undef finally
358 #define except(x) catch(...)
359#endif // Metrowerks
8a60ae88 360
85ee3474
UU
361// where should i put this? we need to make sure of this as it breaks
362// the <iostream> code.
ea57084d 363#if !wxUSE_IOSTREAMH && defined(__WXDEBUG__)
518f33a4 364#ifndef __MWERKS__
ea57084d 365#undef __WXDEBUG__
85ee3474 366#endif
518f33a4 367#endif
85ee3474 368
c801d85f
KB
369// Callback function type definition
370typedef void (*wxFunction) (wxObject&, wxEvent&);
371
372/*
373 * Window style flags.
374 * Values are chosen so they can be |'ed in a bit list.
375 * Some styles are used across more than one group,
376 * so the values mustn't clash with others in the group.
377 * Otherwise, numbers can be reused across groups.
378 *
379 * From version 1.66:
380 * Window (cross-group) styles now take up the first half
381 * of the flag, and control-specific styles the
382 * second half.
d4b67f95 383 *
c801d85f
KB
384 */
385
386/*
387 * Window (Frame/dialog/subwindow/panel item) style flags
388 */
389#define wxVSCROLL 0x80000000
390#define wxHSCROLL 0x40000000
391#define wxCAPTION 0x20000000
392
393// New styles
394#define wxDOUBLE_BORDER 0x10000000
395#define wxSUNKEN_BORDER 0x08000000
396#define wxRAISED_BORDER 0x04000000
397#define wxBORDER 0x02000000
398#define wxSIMPLE_BORDER 0x02000000
399#define wxSTATIC_BORDER 0x01000000
400#define wxTRANSPARENT_WINDOW 0x00100000
401#define wxNO_BORDER 0x00200000
402
403#define wxUSER_COLOURS 0x00800000
404 // Override CTL3D etc. control colour processing to
405 // allow own background colour
64693098 406 // OBSOLETE - use wxNO_3D instead
c801d85f
KB
407#define wxNO_3D 0x00800000
408 // Override CTL3D or native 3D styles for children
565215b2
JS
409#define wxCLIP_CHILDREN 0x00400000
410 // Clip children when painting, which reduces flicker in
411 // e.g. frames and splitter windows, but can't be used in
412 // a panel where a static box must be 'transparent' (panel
413 // paints the background for it)
c801d85f
KB
414
415// Add this style to a panel to get tab traversal working
416// outside of dialogs.
417#define wxTAB_TRAVERSAL 0x00080000
418
419// Orientations
420#define wxHORIZONTAL 0x01
421#define wxVERTICAL 0x02
422#define wxBOTH (wxVERTICAL|wxHORIZONTAL)
423#define wxCENTER_FRAME 0x04 /* centering into frame rather than screen */
424
425/*
426 * Frame/dialog style flags
427 */
3f4a0c5b
VZ
428#define wxSTAY_ON_TOP 0x8000
429#define wxICONIZE 0x4000
430#define wxMINIMIZE wxICONIZE
431#define wxMAXIMIZE 0x2000
432#define wxTHICK_FRAME 0x1000
433#define wxSYSTEM_MENU 0x0800
434#define wxMINIMIZE_BOX 0x0400
435#define wxMAXIMIZE_BOX 0x0200
436#define wxTINY_CAPTION_HORIZ 0x0100
437#define wxTINY_CAPTION_VERT 0x0080
438#define wxRESIZE_BOX wxMAXIMIZE_BOX
439#define wxRESIZE_BORDER 0x0040
440#define wxDIALOG_MODAL 0x0020
441#define wxDIALOG_MODELESS 0x0000
c801d85f 442
565215b2 443#define wxDEFAULT_FRAME_STYLE (wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN)
c801d85f
KB
444
445#if WXWIN_COMPATIBILITY
446#define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE
447#endif
448
3f4a0c5b 449#define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME)
c801d85f
KB
450
451/*
452 * Subwindow style flags
453 */
454#define wxRETAINED 0x0001
455#define wxBACKINGSTORE wxRETAINED
456// wxCanvas or wxPanel can optionally have a thick frame under MS Windows.
457// #define wxTHICK_FRAME 0x1000
458
459/*
460 * wxToolBar style flags
461 */
c801d85f 462#define wxTB_3DBUTTONS 0x8000
81d66cf3
JS
463#define wxTB_HORIZONTAL 0x0002
464#define wxTB_VERTICAL 0x0004
bb6290e3 465// Flatbar/Coolbar under Win98
81d66cf3 466#define wxTB_FLAT 0x0008
3502e687
RR
467// use native docking
468#define wxTB_DOCKABLE 0x0010
c801d85f
KB
469
470/*
3502e687 471 * wxMenuBar style flags
c801d85f 472 */
3502e687
RR
473// use native docking
474#define wxMB_DOCKABLE 0x0001
475
d4b67f95 476
3502e687
RR
477/*
478 * Apply to all panel items
479 */
c801d85f
KB
480#define wxCOLOURED 0x0800
481// Alignment for panel item labels: replaces characters with zeros
482// when creating label, so spaces can be included in string for alignment.
483#define wxFIXED_LENGTH 0x0400
484#define wxALIGN_LEFT 0x0000
485#define wxALIGN_CENTER 0x0100
486#define wxALIGN_CENTRE 0x0100
487#define wxALIGN_RIGHT 0x0200
488
489/*
490 * Styles for wxListBox
491 */
c801d85f 492#define wxLB_SORT 0x0010
9c331ded 493#define wxLB_SINGLE 0x0020
c801d85f
KB
494#define wxLB_MULTIPLE 0x0040
495#define wxLB_EXTENDED 0x0080
496// wxLB_OWNERDRAW is Windows-only
497#define wxLB_OWNERDRAW 0x0100
9c331ded
JS
498#define wxLB_NEEDED_SB 0x0200
499#define wxLB_ALWAYS_SB 0x0400
c801d85f
KB
500#define wxLB_HSCROLL wxHSCROLL
501
502/*
503 * wxTextCtrl style flags
504 */
505#define wxPROCESS_ENTER 0x0004
506#define wxPASSWORD 0x0008
507#define wxTE_PROCESS_ENTER wxPROCESS_ENTER
508#define wxTE_PASSWORD wxPASSWORD
509#define wxTE_READONLY 0x0010
510#define wxTE_MULTILINE 0x0020
2004484f 511#define wxTE_PROCESS_TAB 0x0040
c801d85f
KB
512
513/*
514 * wxComboBox style flags
515 */
516#define wxCB_SIMPLE 0x0004
c801d85f 517#define wxCB_SORT 0x0008
9c331ded
JS
518#define wxCB_READONLY 0x0010
519#define wxCB_DROPDOWN 0x0020
c801d85f
KB
520
521/*
522 * wxRadioBox/wxRadioButton style flags
523 */
fa18b757
JS
524
525// New, more intuitive names to specify majorDim argument
526
527// Same as wxRA_HORIZONTAL
528#define wxRA_SPECIFY_COLS 0x0001
529// Same as wxRA_VERTICAL
530#define wxRA_SPECIFY_ROWS 0x0002
531
532// Old names for compatibility
c801d85f
KB
533#define wxRA_HORIZONTAL wxHORIZONTAL
534#define wxRA_VERTICAL wxVERTICAL
535#define wxRB_GROUP 0x0004
536
537/*
538 * wxGauge flags
539 */
540#define wxGA_PROGRESSBAR 0x0004
541#define wxGA_HORIZONTAL wxHORIZONTAL
542#define wxGA_VERTICAL wxVERTICAL
543
544/*
545 * wxSlider flags
546 */
c801d85f
KB
547#define wxSL_HORIZONTAL wxHORIZONTAL
548#define wxSL_VERTICAL wxVERTICAL
549// The next one is obsolete - use scroll events instead
550#define wxSL_NOTIFY_DRAG 0x0000
551#define wxSL_AUTOTICKS 0x0008
552// #define wxSL_MANUALTICKS 0x0010
553#define wxSL_LABELS 0x0020
554#define wxSL_LEFT 0x0040
555#define wxSL_TOP 0x0080
556#define wxSL_RIGHT 0x0100
557#define wxSL_BOTTOM 0x0200
558#define wxSL_BOTH 0x0400
559#define wxSL_SELRANGE 0x0800
560
561/*
562 * wxScrollBar flags
563 */
c801d85f
KB
564#define wxSB_HORIZONTAL wxHORIZONTAL
565#define wxSB_VERTICAL wxVERTICAL
566
567/*
568 * wxButton flags
569 */
c801d85f
KB
570#define wxBU_AUTODRAW 0x0004
571#define wxBU_NOAUTODRAW 0x0000
572
573/*
574 * wxTreeCtrl flags
575 */
c801d85f
KB
576#define wxTR_HAS_BUTTONS 0x0004
577#define wxTR_EDIT_LABELS 0x0008
64693098 578#define wxTR_LINES_AT_ROOT 0x0010
c801d85f
KB
579
580/*
581 * wxListCtrl flags
582 */
c801d85f
KB
583#define wxLC_ICON 0x0004
584#define wxLC_SMALL_ICON 0x0008
585#define wxLC_LIST 0x0010
586#define wxLC_REPORT 0x0020
587#define wxLC_ALIGN_TOP 0x0040
588#define wxLC_ALIGN_LEFT 0x0080
589#define wxLC_AUTOARRANGE 0x0100
590#define wxLC_USER_TEXT 0x0200
591#define wxLC_EDIT_LABELS 0x0400
592#define wxLC_NO_HEADER 0x0800
593#define wxLC_NO_SORT_HEADER 0x1000
594#define wxLC_SINGLE_SEL 0x2000
595#define wxLC_SORT_ASCENDING 0x4000
596#define wxLC_SORT_DESCENDING 0x8000
597
598#define wxLC_MASK_TYPE (wxLC_ICON | wxLC_SMALL_ICON | wxLC_LIST | wxLC_REPORT)
599#define wxLC_MASK_ALIGN (wxLC_ALIGN_TOP | wxLC_ALIGN_LEFT)
600#define wxLC_MASK_SORT (wxLC_SORT_ASCENDING | wxLC_SORT_DESCENDING)
601
602// Omitted because (a) too much detail (b) not enough style flags
603// #define wxLC_NO_SCROLL
604// #define wxLC_NO_LABEL_WRAP
605// #define wxLC_OWNERDRAW_FIXED
606// #define wxLC_SHOW_SEL_ALWAYS
607
608/*
609 * wxSpinButton flags
610 */
611
612#define wxSP_VERTICAL 0x0004
613#define wxSP_HORIZONTAL 0x0008
614#define wxSP_ARROW_KEYS 0x0010
615#define wxSP_WRAP 0x0020
616
617/*
cd2df130 618 * wxSplitterWindow flags
c801d85f
KB
619 */
620
621#define wxSP_NOBORDER 0x0000
622#define wxSP_3D 0x0004
623#define wxSP_BORDER 0x0008
624
cd2df130
JS
625/*
626 * wxFrame extra flags
627 */
628
629// No title on taskbar
630#define wxFRAME_TOOL_WINDOW 0x0004
631
c801d85f
KB
632/*
633 * wxTabCtrl flags
634 */
635
636#define wxTAB_MULTILINE 0x0000
637#define wxTAB_RIGHTJUSTIFY 0x0004
638#define wxTAB_FIXEDWIDTH 0x0008
639#define wxTAB_OWNERDRAW 0x0010
640
10b959e3
JS
641// Sorry, I changed my mind about these names...
642#define wxTC_MULTILINE 0x0000
643#define wxTC_RIGHTJUSTIFY 0x0004
644#define wxTC_FIXEDWIDTH 0x0008
645#define wxTC_OWNERDRAW 0x0010
646
c801d85f
KB
647/*
648 * wxStatusBar95 flags
649 */
650
565215b2 651#define wxST_SIZEGRIP 0x0002
c801d85f
KB
652
653/*
654 * GDI descriptions
655 */
656
657enum {
658// Text font families
659 wxDEFAULT = 70,
660 wxDECORATIVE,
661 wxROMAN,
662 wxSCRIPT,
663 wxSWISS,
664 wxMODERN,
665 wxTELETYPE, /* @@@@ */
666
667// Proportional or Fixed width fonts (not yet used)
668 wxVARIABLE = 80,
669 wxFIXED,
670
671 wxNORMAL = 90,
672 wxLIGHT,
673 wxBOLD,
674// Also wxNORMAL for normal (non-italic text)
675 wxITALIC,
676 wxSLANT,
677
678// Pen styles
679 wxSOLID = 100,
680 wxDOT,
681 wxLONG_DASH,
682 wxSHORT_DASH,
683 wxDOT_DASH,
684 wxUSER_DASH,
685
686 wxTRANSPARENT,
687
688// Brush & Pen Stippling. Note that a stippled pen cannot be dashed!!
689// Note also that stippling a Pen IS meaningfull, because a Line is
690// drawn with a Pen, and without any Brush -- and it can be stippled.
691 wxSTIPPLE = 110,
692 wxBDIAGONAL_HATCH,
693 wxCROSSDIAG_HATCH,
694 wxFDIAGONAL_HATCH,
695 wxCROSS_HATCH,
696 wxHORIZONTAL_HATCH,
697 wxVERTICAL_HATCH,
3f4a0c5b 698#define IS_HATCH(s) ((s)>=wxBDIAGONAL_HATCH && (s)<=wxVERTICAL_HATCH)
c801d85f
KB
699
700 wxJOIN_BEVEL = 120,
701 wxJOIN_MITER,
702 wxJOIN_ROUND,
703
704 wxCAP_ROUND = 130,
705 wxCAP_PROJECTING,
706 wxCAP_BUTT
707};
708
709
710// Logical ops
3f4a0c5b 711typedef enum
83624f79 712{
c801d85f
KB
713 wxCLEAR, // 0
714 wxXOR, // src XOR dst
715 wxINVERT, // NOT dst
716 wxOR_REVERSE, // src OR (NOT dst)
717 wxAND_REVERSE,// src AND (NOT dst)
718 wxCOPY, // src
719 wxAND, // src AND dst
720 wxAND_INVERT, // (NOT src) AND dst
721 wxNO_OP, // dst
722 wxNOR, // (NOT src) AND (NOT dst)
723 wxEQUIV, // (NOT src) XOR dst
724 wxSRC_INVERT, // (NOT src)
725 wxOR_INVERT, // (NOT src) OR dst
726 wxNAND, // (NOT src) OR (NOT dst)
727 wxOR, // src OR dst
728 wxSET, // 1
729 wxSRC_OR, // source _bitmap_ OR destination
730 wxSRC_AND // source _bitmap_ AND destination
731} form_ops_t;
732
733// Flood styles
734#define wxFLOOD_SURFACE 1
735#define wxFLOOD_BORDER 2
736
737// Polygon filling mode
738#define wxODDEVEN_RULE 1
739#define wxWINDING_RULE 2
740
741// ToolPanel in wxFrame
3f4a0c5b
VZ
742#define wxTOOL_TOP 1
743#define wxTOOL_BOTTOM 2
744#define wxTOOL_LEFT 3
745#define wxTOOL_RIGHT 4
c801d85f
KB
746
747// Dialog specifiers/return values
748
749#define wxOK 0x0001
750#define wxYES_NO 0x0002
751#define wxCANCEL 0x0004
752#define wxYES 0x0008
753#define wxNO 0x0010
754
755#define wxICON_EXCLAMATION 0x0020
756#define wxICON_HAND 0x0040
757#define wxICON_QUESTION 0x0080
758#define wxICON_INFORMATION 0x0100
759
760#define wxICON_STOP wxICON_HAND
761#define wxICON_ASTERISK wxICON_INFORMATION
762#define wxICON_MASK (0x0020|0x0040|0x0080|0x0100)
763
764#define wxCENTRE 0x0200
765#define wxCENTER wxCENTRE
766
767// Possible SetSize flags
768
769// Use internally-calculated width if -1
81d66cf3 770#define wxSIZE_AUTO_WIDTH 0x0001
c801d85f 771// Use internally-calculated height if -1
81d66cf3 772#define wxSIZE_AUTO_HEIGHT 0x0002
c801d85f 773// Use internally-calculated width and height if each is -1
81d66cf3 774#define wxSIZE_AUTO (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT)
c801d85f
KB
775// Ignore missing (-1) dimensions (use existing).
776// For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code.
81d66cf3 777#define wxSIZE_USE_EXISTING 0x0000
c801d85f 778// Allow -1 as a valid position
81d66cf3
JS
779#define wxSIZE_ALLOW_MINUS_ONE 0x0004
780// Don't do parent client adjustments (for implementation only)
781#define wxSIZE_NO_ADJUSTMENTS 0x0008
c801d85f 782
0d2a2b60
RR
783#ifndef __WXGTK__
784
e3e65dac
RR
785enum wxDataFormat
786{
06e43511 787 wxDF_INVALID = 0,
e3e65dac
RR
788 wxDF_TEXT = 1, /* CF_TEXT */
789 wxDF_BITMAP = 2, /* CF_BITMAP */
790 wxDF_METAFILE = 3, /* CF_METAFILEPICT */
06e43511
JS
791 wxDF_SYLK = 4,
792 wxDF_DIF = 5,
793 wxDF_TIFF = 6,
e3e65dac 794 wxDF_OEMTEXT = 7, /* CF_OEMTEXT */
06e43511
JS
795 wxDF_DIB = 8, /* CF_DIB */
796 wxDF_PALETTE = 9,
797 wxDF_PENDATA = 10,
798 wxDF_RIFF = 11,
799 wxDF_WAVE = 12,
800 wxDF_UNICODETEXT = 13,
801 wxDF_ENHMETAFILE = 14,
8b53e5a2 802 wxDF_FILENAME = 15, /* CF_HDROP */
06e43511 803 wxDF_LOCALE = 16,
8b53e5a2 804 wxDF_PRIVATE = 20
e3e65dac 805};
c801d85f 806
0d2a2b60
RR
807#endif
808
83624f79 809/* Virtual keycodes */
e3e65dac 810
3f4a0c5b 811enum wxKeyCode
83624f79 812{
c801d85f
KB
813 WXK_BACK = 8,
814 WXK_TAB = 9,
3f4a0c5b
VZ
815 WXK_RETURN = 13,
816 WXK_ESCAPE = 27,
817 WXK_SPACE = 32,
c801d85f
KB
818 WXK_DELETE = 127,
819
820 WXK_START = 300,
821 WXK_LBUTTON,
822 WXK_RBUTTON,
823 WXK_CANCEL,
824 WXK_MBUTTON,
825 WXK_CLEAR,
826 WXK_SHIFT,
827 WXK_CONTROL,
828 WXK_MENU,
829 WXK_PAUSE,
830 WXK_CAPITAL,
83624f79
RR
831 WXK_PRIOR, /* Page up */
832 WXK_NEXT, /* Page down */
c801d85f
KB
833 WXK_END,
834 WXK_HOME,
835 WXK_LEFT,
836 WXK_UP,
837 WXK_RIGHT,
838 WXK_DOWN,
839 WXK_SELECT,
840 WXK_PRINT,
841 WXK_EXECUTE,
842 WXK_SNAPSHOT,
843 WXK_INSERT,
844 WXK_HELP,
845 WXK_NUMPAD0,
846 WXK_NUMPAD1,
847 WXK_NUMPAD2,
848 WXK_NUMPAD3,
849 WXK_NUMPAD4,
850 WXK_NUMPAD5,
851 WXK_NUMPAD6,
852 WXK_NUMPAD7,
853 WXK_NUMPAD8,
854 WXK_NUMPAD9,
855 WXK_MULTIPLY,
856 WXK_ADD,
857 WXK_SEPARATOR,
858 WXK_SUBTRACT,
859 WXK_DECIMAL,
860 WXK_DIVIDE,
861 WXK_F1,
862 WXK_F2,
863 WXK_F3,
864 WXK_F4,
865 WXK_F5,
866 WXK_F6,
867 WXK_F7,
868 WXK_F8,
869 WXK_F9,
870 WXK_F10,
871 WXK_F11,
872 WXK_F12,
873 WXK_F13,
874 WXK_F14,
875 WXK_F15,
876 WXK_F16,
877 WXK_F17,
878 WXK_F18,
879 WXK_F19,
880 WXK_F20,
881 WXK_F21,
882 WXK_F22,
883 WXK_F23,
884 WXK_F24,
885 WXK_NUMLOCK,
886 WXK_SCROLL,
887 WXK_PAGEUP,
888 WXK_PAGEDOWN
889};
890
83624f79
RR
891/* OS mnemonics -- Identify the running OS (useful for Windows)
892 * [Not all platforms are currently available or supported] */
3f4a0c5b 893enum
83624f79 894{
34138703 895 wxUNKNOWN_PLATFORM,
3f4a0c5b
VZ
896 wxCURSES, // Text-only CURSES
897 wxXVIEW_X, // Sun's XView OpenLOOK toolkit
898 wxMOTIF_X, // OSF Motif 1.x.x
899 wxCOSE_X, // OSF Common Desktop Environment
900 wxNEXTSTEP, // NeXTStep
901 wxMACINTOSH, // Apple System 7
902 wxGTK, // GTK
903 wxQT, // Qt
904 wxGEOS, // GEOS
905 wxOS2_PM, // OS/2 Workplace
906 wxWINDOWS, // Windows or WfW
907 wxPENWINDOWS, // Windows for Pen Computing
908 wxWINDOWS_NT, // Windows NT
909 wxWIN32S, // Windows 32S API
910 wxWIN95, // Windows 95
911 wxWIN386 // Watcom 32-bit supervisor modus
c801d85f
KB
912};
913
83624f79 914/* Printing */
c801d85f
KB
915#ifndef wxPORTRAIT
916#define wxPORTRAIT 1
917#define wxLANDSCAPE 2
918#endif
919
83624f79 920/* Standard menu identifiers */
1f112209
JS
921#define wxID_LOWEST 4999
922
c801d85f
KB
923#define wxID_OPEN 5000
924#define wxID_CLOSE 5001
925#define wxID_NEW 5002
926#define wxID_SAVE 5003
927#define wxID_SAVEAS 5004
928#define wxID_REVERT 5005
929#define wxID_EXIT 5006
930#define wxID_UNDO 5007
931#define wxID_REDO 5008
932#define wxID_HELP 5009
933#define wxID_PRINT 5010
934#define wxID_PRINT_SETUP 5011
935#define wxID_PREVIEW 5012
936#define wxID_ABOUT 5013
937#define wxID_HELP_CONTENTS 5014
938#define wxID_HELP_COMMANDS 5015
939#define wxID_HELP_PROCEDURES 5016
940#define wxID_HELP_CONTEXT 5017
941
942#define wxID_CUT 5030
943#define wxID_COPY 5031
944#define wxID_PASTE 5032
945#define wxID_CLEAR 5033
946#define wxID_FIND 5034
7f555861 947#define wxID_DUPLICATE 5035
77e3eac5 948#define wxID_SELECTALL 5036
c801d85f
KB
949
950#define wxID_FILE1 5050
951#define wxID_FILE2 5051
952#define wxID_FILE3 5052
953#define wxID_FILE4 5053
954#define wxID_FILE5 5054
955#define wxID_FILE6 5055
956#define wxID_FILE7 5056
957#define wxID_FILE8 5057
958#define wxID_FILE9 5058
959
960#define wxID_OK 5100
961#define wxID_CANCEL 5101
962#define wxID_APPLY 5102
963#define wxID_YES 5103
964#define wxID_NO 5104
5de76427 965#define wxID_STATIC 5105
c801d85f 966
dfad0599
JS
967#define wxID_HIGHEST 5999
968
e3065973
JS
969// Mapping modes (as per Windows)
970#define wxMM_TEXT 1
971#define wxMM_LOMETRIC 2
972#define wxMM_HIMETRIC 3
973#define wxMM_LOENGLISH 4
974#define wxMM_HIENGLISH 5
975#define wxMM_TWIPS 6
976#define wxMM_ISOTROPIC 7
977#define wxMM_ANISOTROPIC 8
978
979#define wxMM_POINTS 9
980#define wxMM_METRIC 10
981
83624f79 982/* Shortcut for easier dialog-unit-to-pixel conversion */
387a3b02 983#define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt)
fd71308f 984
2049ba38 985#ifdef __WXMSW__
83624f79
RR
986/* Stand-ins for Windows types, to avoid
987 * #including all of windows.h */
c801d85f
KB
988typedef unsigned long WXHWND;
989typedef unsigned long WXHANDLE;
990typedef unsigned long WXHICON;
991typedef unsigned long WXHFONT;
992typedef unsigned long WXHMENU;
993typedef unsigned long WXHPEN;
994typedef unsigned long WXHBRUSH;
995typedef unsigned long WXHPALETTE;
996typedef unsigned long WXHCURSOR;
997typedef unsigned long WXHRGN;
57a7b7c1 998typedef unsigned long WXHACCEL;
c801d85f
KB
999typedef unsigned long WXHINSTANCE;
1000typedef unsigned long WXHBITMAP;
1001typedef unsigned long WXHIMAGELIST;
1002typedef unsigned long WXHGLOBAL;
1003typedef unsigned long WXHDC;
1004typedef unsigned int WXUINT;
1005typedef unsigned long WXDWORD;
1006typedef unsigned short WXWORD;
1007typedef unsigned int WXWPARAM;
1008typedef long WXLPARAM;
1009typedef unsigned long WXCOLORREF;
c801d85f
KB
1010typedef void * WXRGNDATA;
1011typedef void * WXMSG;
1012typedef unsigned long WXHCONV;
0d8d91a9 1013typedef unsigned long WXHKEY;
ef366d32 1014typedef unsigned long WXHTREEITEM;
c801d85f
KB
1015typedef void * WXDRAWITEMSTRUCT;
1016typedef void * WXMEASUREITEMSTRUCT;
1017typedef void * WXLPCREATESTRUCT;
14b72bf5
JS
1018#ifdef __GNUWIN32__
1019typedef int (*WXFARPROC)();
1e6d9499 1020#elif defined(__WIN32__)
b039c367 1021typedef int (__stdcall *WXFARPROC)();
1e6d9499
JS
1022#else
1023typedef int (*WXFARPROC)();
14b72bf5 1024#endif
c801d85f
KB
1025
1026#endif
1027
589f0e3e 1028#ifdef __WXMOTIF__
83624f79 1029/* Stand-ins for X/Xt/Motif types */
589f0e3e
JS
1030typedef void* WXWindow;
1031typedef void* WXWidget;
1032typedef void* WXAppContext;
46ccb510 1033typedef void* WXColormap;
589f0e3e
JS
1034typedef void WXDisplay;
1035typedef void WXEvent;
46ccb510 1036typedef void* WXCursor;
50414e24 1037typedef void* WXPixmap;
dfc54541
JS
1038typedef void* WXFontStructPtr;
1039typedef void* WXGC;
1040typedef void* WXRegion;
e97f20a0 1041typedef void* WXFont;
f97c9854
JS
1042typedef void* WXImage;
1043typedef void* WXCursor;
1044typedef void* WXFontList;
589f0e3e
JS
1045#endif
1046
83624f79
RR
1047#ifdef __WXGTK__
1048/* Stand-ins for GLIB types */
1049typedef int gint;
1050typedef unsigned guint;
1051typedef unsigned long gulong;
1052typedef void* gpointer;
1053
1054/* Stand-ins for GDK types */
1055typedef gulong GdkAtom;
1056typedef struct _GdkColor GdkColor;
1057typedef struct _GdkColormap GdkColormap;
1058typedef struct _GdkFont GdkFont;
1059typedef struct _GdkGC GdkGC;
1060typedef struct _GdkWindow GdkWindow;
1061typedef struct _GdkWindow GdkBitmap;
1062typedef struct _GdkWindow GdkPixmap;
1063typedef struct _GdkCursor GdkCursor;
1064typedef struct _GdkRegion GdkRegion;
1065
1066/* Stand-ins for GTK types */
1067typedef struct _GtkWidget GtkWidget;
1068typedef struct _GtkStyle GtkStyle;
1069typedef struct _GtkAdjustment GtkAdjustment;
1070typedef struct _GtkList GtkList;
1071typedef struct _GtkToolbar GtkToolbar;
b1170810 1072typedef struct _GtkTooltips GtkTooltips;
83624f79
RR
1073typedef struct _GtkNotebook GtkNotebook;
1074typedef struct _GtkNotebookPage GtkNotebookPage;
ad5c34f3
JS
1075
1076#endif
1077
1078// This is required because of clashing macros in windows.h, which may be
1079// included before or after wxWindows classes, and therefore must be
1080// disabled here before any significant wxWindows headers are included.
1081#ifdef __WXMSW__
1082#ifdef GetClassInfo
1083#undef GetClassInfo
1084#endif
1085
1086#ifdef GetClassName
1087#undef GetClassName
1088#endif
1089
1090#ifdef DrawText
1091#undef DrawText
1092#endif
1093
1094#ifdef GetCharWidth
1095#undef GetCharWidth
1096#endif
1097
1098#ifdef StartDoc
1099#undef StartDoc
1100#endif
1101
1102#ifdef FindWindow
1103#undef FindWindow
1104#endif
1105
1106#ifdef FindResource
1107#undef FindResource
1108#endif
83624f79 1109#endif
ad5c34f3 1110 // __WXMSW__
83624f79 1111
c801d85f 1112#endif
34138703 1113 // _WX_DEFS_H_