wxWidgets Symbols and Headers
Although wxWidgets defines a lot of symbols, there is only a handful that you are likely to need to use in your projects. Sometimes, it may be necessary to execute certain code only on certain platforms or under certain conditions, such as the following:
For your convenience, Appendix A. Consider for a moment that you can include a single file, regardless of the target platform, and yet wxWidgets always uses the correct platform information. Nearly all of the header files in include/wx have a block like the following (taken from combobox.h):
#ifdef __WXMAC__
// Do something Mac-only
#endif
By using the symbols defined for various platforms or toolkits, one common header file can include the correct platform-specific header without you needing to perform these tedious checks yourself. Simply include the correct header in include/wx, and wxWidgets does the rest. For example, you would only need to use one line to add the necessary headers to support combo boxes:
#if defined(__WXUNIVERSAL__)
#include "wx/univ/combobox.h"
#elif defined(__WXMSW__)
#include "wx/msw/combobox.h"
#elif defined(__WXMOTIF__)
#include "wx/motif/combobox.h"
#elif defined(__WXGTK__)
#include "wx/gtk/combobox.h"
#elif defined(__WXMAC__)
#include "wx/mac/combobox.h"
#elif defined(__WXCOCOA__)
#include "wx/cocoa/combobox.h"
#elif defined(__WXPM__)
#include "wx/os2/combobox.h"
#endif
However, it would still be very tedious to add the headers for all of the wxWidgets classes that you use in each source file. wxWidgets provides include/wx/wx.h, which itself includes many of the commonly used class headers. There is also include/wx/wxprec.h, which you need to include when using precompiled headers on supported platforms. For example:
#include "wx/combobox.h"
If your code must work across different versions of wxWidgets, it's useful to know about the macro wxCHECK_VERSION(major, minor, release). It succeeds if the version that the source is being compiled against is at least the version specified. For example:
// For compilers that support precompilation, includes "wx.h".
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
// Include your minimal set of headers here, or wx.h
#include <wx/wx.h>
#endif
... now your other include files ...
#if wxCHECK_VERSION(2,5,5)
// Anything for wxWidgets 2.5.5 and above
#else
// Anything for wxWidgets 2.5.4 and below
#endif
