#include "wx/defs.h"
-#ifdef wxUSE_CLIPBOARD
+#if wxUSE_CLIPBOARD
#include "wx/object.h"
#include "wx/list.h"
#include "wx/defs.h"
-#ifdef wxUSE_COMBOBOX
+#if wxUSE_COMBOBOX
#include "wx/object.h"
#include "wx/control.h"
#endif
#include "wx/dc.h"
+
+#if wxUSE_POSTSCRIPT
+
#include "wx/dialog.h"
#include "wx/module.h"
#include <fstream.h>
-#if wxUSE_POSTSCRIPT
//-----------------------------------------------------------------------------
// classes
#include "wx/defs.h"
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
#include "wx/object.h"
#include "wx/string.h"
void SetString( int n, const wxString &string );
void SetStringSelection( const wxString &string, bool select = TRUE );
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
void SetDropTarget( wxDropTarget *dropTarget );
#endif
class wxClientData;
class wxVoidClientData;
class wxWindow;
-#ifdef wxUSE_WX_RESOURCES
+#if wxUSE_WX_RESOURCES
class wxResourceTable;
class wxItemResource;
#endif
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
class wxDropTarget;
#endif
virtual bool PopupMenu( wxMenu *menu, int x, int y );
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
virtual void SetDropTarget( wxDropTarget *dropTarget );
virtual wxDropTarget *GetDropTarget() const;
#endif
int m_retCode;
wxEvtHandler *m_eventHandler;
wxValidator *m_windowValidator;
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
wxDropTarget *m_dropTarget;
#endif
wxWindowID m_windowId;
#include "wx/defs.h"
-#ifdef wxUSE_CLIPBOARD
+#if wxUSE_CLIPBOARD
#include "wx/object.h"
#include "wx/list.h"
#include "wx/defs.h"
-#ifdef wxUSE_COMBOBOX
+#if wxUSE_COMBOBOX
#include "wx/object.h"
#include "wx/control.h"
#endif
#include "wx/dc.h"
+
+#if wxUSE_POSTSCRIPT
+
#include "wx/dialog.h"
#include "wx/module.h"
#include <fstream.h>
-#if wxUSE_POSTSCRIPT
//-----------------------------------------------------------------------------
// classes
#include "wx/defs.h"
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
#include "wx/object.h"
#include "wx/string.h"
void SetString( int n, const wxString &string );
void SetStringSelection( const wxString &string, bool select = TRUE );
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
void SetDropTarget( wxDropTarget *dropTarget );
#endif
class wxClientData;
class wxVoidClientData;
class wxWindow;
-#ifdef wxUSE_WX_RESOURCES
+#if wxUSE_WX_RESOURCES
class wxResourceTable;
class wxItemResource;
#endif
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
class wxDropTarget;
#endif
virtual bool PopupMenu( wxMenu *menu, int x, int y );
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
virtual void SetDropTarget( wxDropTarget *dropTarget );
virtual wxDropTarget *GetDropTarget() const;
#endif
int m_retCode;
wxEvtHandler *m_eventHandler;
wxValidator *m_windowValidator;
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
wxDropTarget *m_dropTarget;
#endif
wxWindowID m_windowId;
#include <windows.h>
#endif
+
#ifdef __WXGTK__
extern "C" {
-#include <../iodbc/postgres/isqlext.h>
-#include <../iodbc/postgres/odbc_funcs.h>
-#include <../iodbc/postgres/odbc_types.h>
+#include <../iodbc/isql.h>
+#include <../iodbc/isqlext.h>
+#include <../iodbc/odbc_funcs.h>
+#include <../iodbc/odbc_types.h>
+typedef float SFLOAT;
+typedef double SDOUBLE;
+#define ULONG UDWORD
}
#else
#include <sqlext.h>
wxMutex *m_mutex;
};
+#ifdef __WXMSW__
+
// ----------------------------------------------------------------------------
// Critical section: this is the same as mutex but is only visible to the
// threads of the same process. For the platforms which don't have native
wxCriticalSection *m_critsect;
};
+#endif
+
// ----------------------------------------------------------------------------
// Condition handler.
// ----------------------------------------------------------------------------
/*
* Use zlib
*/
-#undef wxUSE_ZLIB
+#define wxUSE_ZLIB 0
/*
* Use libpng
*/
-#undef wxUSE_LIBPNG
+#define wxUSE_LIBPNG 0
/*
* Use iODBC
*/
-#undef wxUSE_ODBC
+#define wxUSE_ODBC 0
/*
* Use Threads
*/
-#undef wxUSE_THREADS
+#define wxUSE_THREADS 0
//------------------------------------------------------------------------
-// GUI control options
+// GUI control options (allways enabled in wxGTK)
//------------------------------------------------------------------------
/*
/*
* Use time and date classes
*/
-#undef wxUSE_TIMEDATE
+#define wxUSE_TIMEDATE 0
/*
* Use config system
*/
-#undef wxUSE_CONFIG
+#define wxUSE_CONFIG 0
/*
* Use intl system
*/
-#undef wxUSE_INTL
+#define wxUSE_INTL 0
/*
* Use streams
*/
-#undef wxUSE_STREAMS
+#define wxUSE_STREAMS 0
/*
* Use class serialization
*/
-#undef wxUSE_SERIAL
+#define wxUSE_SERIAL 0
+/*
+ * Use standard C++ streams if 1. If 0, use wxWin
+ * streams implementation.
+ */
+#define wxUSE_STD_IOSTREAM 1
//------------------------------------------------------------------------
// PS options
* Use font metric files in GetTextExtent for wxPostScriptDC
* Use consistent PostScript fonts for AFM and printing (!)
*/
-#undef wxUSE_AFM_FOR_POSTSCRIPT
-#undef WX_NORMALIZED_PS_FONTS
+#define wxUSE_AFM_FOR_POSTSCRIPT 0
+#define WX_NORMALIZED_PS_FONTS 0
/*
* Use PostScript device context
*/
-#undef wxUSE_POSTSCRIPT
+#define wxUSE_POSTSCRIPT 0
//------------------------------------------------------------------------
// wxString options
/*
* Compile wxString with wide character (Unicode) support?
*/
-#undef wxUSE_UNICODE
+#define wxUSE_UNICODE 0
/*
* Work around a bug in GNU libc 5.x wcstombs() implementation.
* have libc 5 (you should enable this for libc6 where wcsrtombs() is
* thread-safe version of wcstombs()).
*/
-#undef wxUSE_WCSRTOMBS
+#define wxUSE_WCSRTOMBS 0
//------------------------------------------------------------------------
// misc options
/*
* Use Interprocess communication
*/
-#undef wxUSE_IPC
+#define wxUSE_IPC 0
/*
* Use wxGetResource & wxWriteResource (change .Xdefaults)
*/
-#undef wxUSE_RESOURCES
+#define wxUSE_RESOURCES 0
/*
* Use clipboard
*/
-#undef wxUSE_CLIPBOARD
+#define wxUSE_CLIPBOARD 0
/*
* Use dnd
*/
-#undef wxUSE_DRAG_AND_DROP
+#define wxUSE_DRAG_AND_DROP 0
//------------------------------------------------------------------------
// architecture options
/*
* Use the mdi architecture
*/
-#undef wxUSE_MDI_ARCHITECTURE
+#define wxUSE_MDI_ARCHITECTURE 0
/*
* Use the document/view architecture
*/
-#undef wxUSE_DOC_VIEW_ARCHITECTURE
+#define wxUSE_DOC_VIEW_ARCHITECTURE 0
/*
* Use the print/preview architecture
*/
-#undef wxUSE_PRINTING_ARCHITECTURE
+#define wxUSE_PRINTING_ARCHITECTURE 0
//------------------------------------------------------------------------
// Prolog and wxWindows' resource system options
/*
* Use Prolog IO
*/
-#undef wxUSE_PROLOGIO
+#define wxUSE_PROLOGIO 0
/*
* Use Remote Procedure Call (Needs wxUSE_IPC and wxUSE_PROLOGIO)
*/
-#undef wxUSE_RPC
+#define wxUSE_RPC 0
/*
* Use wxWindows resource loading (.wxr-files) (Needs wxUSE_PROLOGIO 1)
*/
-#undef wxUSE_WX_RESOURCES
+#define wxUSE_WX_RESOURCES 0
//------------------------------------------------------------------------
// the rest
/*
* Use wxWindows help facility (needs wxUSE_IPC 1)
*/
-#undef wxUSE_HELP
+#define wxUSE_HELP 0
/*
* Use iostream.h rather than iostream
*/
-#undef wxUSE_IOSTREAMH
+#define wxUSE_IOSTREAMH 0
/*
* Use Apple Ieee-double converter
*/
-#undef wxUSE_APPLE_IEEE
+#define wxUSE_APPLE_IEEE 0
/* Compatibility with 1.66 API.
Level 0: no backward compatibility, all new features
Level 1: wxDC, OnSize (etc.) compatibility, but
/*
* Enables debugging: memory tracing, assert, etc., contains debug level
*/
-#undef WXDEBUG
+#define WXDEBUG 0
/*
* Enables debugging version of wxObject::new and wxObject::delete (IF WXDEBUG)
* WARNING: this code may not work with all architectures, especially
* if alignment is an issue.
*/
-#undef wxUSE_MEMORY_TRACING
+#define wxUSE_MEMORY_TRACING 0
/*
* Enable debugging version of global memory operators new and delete
* Disable it, If this causes problems (e.g. link errors)
*/
-#undef wxUSE_GLOBAL_MEMORY_OPERATORS
+#define wxUSE_GLOBAL_MEMORY_OPERATORS 0
/*
* Matthews garbage collection (used for MrEd?)
*/
int height = (int)dbuf[1];
if (width > 32767)
{
- fprintf(stderr, "IMLIB ERROR: Image width > 32767 pixels for file\n");
+ wxLogError( "Image width > 32767 pixels for file\n" );
fclose(file);
return FALSE;
}
if (height > 32767)
{
- fprintf(stderr, "IMLIB ERROR: Image height > 32767 pixels for file\n");
+ wxLogError( "Image height > 32767 pixels for file\n" );
fclose(file);
return FALSE;
}
bpp = (int)word;
if (bpp != 1 && bpp != 4 && bpp != 8 && bpp && 16 && bpp != 24 && bpp != 32)
{
- fprintf(stderr, "IMLIB ERROR: unknown bitdepth in file\n");
+ wxLogError( "unknown bitdepth in file\n" );
fclose(file);
return FALSE;
}
comp = (int)dbuf[0];
if (comp != BI_RGB && comp != BI_RLE4 && comp != BI_RLE8 && comp != BI_BITFIELDS)
{
- fprintf(stderr, "IMLIB ERROR: unknown encoding in Windows BMP file\n");
+ wxLogError( "unknown encoding in Windows BMP file\n" );
fclose(file);
return FALSE;
}
/* some more sanity checks */
if (((comp == BI_RLE4) && (bpp != 4)) || ((comp == BI_RLE8) && (bpp != 8)) || ((comp == BI_BITFIELDS) && (bpp != 16 && bpp != 32)))
{
- fprintf(stderr, "IMLIB ERROR: encoding of BMP doesn't match bitdepth\n");
+ wxLogError( "encoding of BMP doesn't match bitdepth\n" );
fclose(file);
return FALSE;
}
if (!cmap)
{
- fprintf(stderr, "IMLIB ERROR: Cannot allocate RAM for color map in BMP file\n");
+ wxLogError( "Cannot allocate RAM for color map in BMP file\n" );
fclose(file);
return FALSE;
}
ptr = image->GetData();
if (!ptr)
{
- fprintf(stderr, "IMLIB ERROR: Cannot allocate RAM for RGB data in file\n");
+ wxLogError( "Cannot allocate RAM for RGB data in file\n" );
fclose(file);
if (cmap)
free(cmap);
{
if (comp == BI_RLE4)
{
- fprintf(stderr, "can't deal with 4bit encoded yet.\n");
+ wxLogError( "can't deal with 4bit encoded yet.\n");
image->Destroy();
free(cmap);
return FALSE;
GdkVisual *visual = gdk_window_get_visual( bitmap.GetPixmap() );
if (visual == NULL) visual = gdk_window_get_visual( (GdkWindow*) &gdk_root_parent );
int bpp = visual->depth;
+
+ bitmap.SetDepth( bpp );
+
if ((bpp == 16) && (visual->red_mask != 0xf800)) bpp = 15;
if (bpp < 8) bpp = 8;
#include "wx/intl.h"
#endif
+#if wxUSE_RADIOBUTTON
+#include "wx/radiobut.h"
+#endif
+
#if wxUSE_SCROLLBAR
#include "wx/scrolbar.h"
#endif
#include "wx/memory.h"
#include "wx/font.h"
#include "wx/settings.h"
-#ifdef wxUSE_WX_RESOURCES
+#if wxUSE_WX_RESOURCES
#include "wx/resource.h"
#endif
#include "wx/module.h"
#include "wx/image.h"
-#ifdef wxUSE_THREADS
+#if wxUSE_THREADS
#include "wx/thread.h"
#endif
#include "unistd.h"
gint wxapp_idle_callback( gpointer WXUNUSED(data) )
{
if (wxTheApp) while (wxTheApp->ProcessIdle()) {}
-#ifdef wxUSE_THREADS
+#if wxUSE_THREADS
wxMutexGuiLeave();
#endif
usleep(10000);
-#ifdef wxUSE_THREADS
+#if wxUSE_THREADS
wxMutexGuiEnter();
#endif
return TRUE;
wxInitializeStockLists();
wxInitializeStockObjects();
-#ifdef wxUSE_WX_RESOURCES
+#if wxUSE_WX_RESOURCES
wxTheResourceCache = new wxResourceCache(wxKEY_STRING);
wxInitializeResourceSystem();
wxDELETE(wxTheFontNameDirectory);
wxDeleteStockObjects();
-#ifdef wxUSE_WX_RESOURCES
+#if wxUSE_WX_RESOURCES
wxFlushResources();
wxDELETE(wxTheResourceCache);
#include "wx/clipbrd.h"
-#ifdef wxUSE_CLIPBOARD
+#if wxUSE_CLIPBOARD
#include "glib.h"
#include "gdk/gdk.h"
#include "wx/combobox.h"
-#ifdef wxUSE_COMBOBOX
+#if wxUSE_COMBOBOX
#include <wx/intl.h>
#pragma interface
#endif
+
+#include "wx/defs.h"
+
+#if wxUSE_POSTSCRIPT
+
#include "wx/postscrp.h"
#include "wx/dcmemory.h"
#include "wx/utils.h"
}
}
+#endif
+ // wxUSE_POSTSCRIPT
#include "wx/dnd.h"
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
#include "wx/window.h"
#include "wx/app.h"
#include "wx/intl.h"
#include "wx/checklst.h"
+#if wxUSE_DRAG_AND_DROP
+#include "wx/dnd.h"
+#endif
+
#include "gdk/gdk.h"
#include "gtk/gtk.h"
ConnectWidget( list_item );
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
#ifndef NEW_GTK_DND_CODE
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
#endif
return -1;
}
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
{
wxCHECK_RET( m_list != NULL, "invalid listbox" );
#include "wx/menu.h"
#include "wx/log.h"
#include "wx/intl.h"
+#include "wx/app.h"
#include "gdk/gdk.h"
#include "gtk/gtk.h"
static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
{
+ wxYield();
+
int id = menu->FindMenuIdByMenuItem(widget);
/* should find it for normal (not popup) menu */
pthread_exit(status);
}
-void wxThread::TestDestroy()
+bool wxThread::TestDestroy()
{
if (p_internal->state == STATE_PAUSING)
{
}
}
pthread_testcancel();
+
+ return TRUE; /* what is this for? */
}
bool wxThread::IsMain()
// wxThreadModule
//--------------------------------------------------------------------
+class wxThreadModule : public wxModule
+{
+public:
+ virtual bool OnInit();
+ virtual void OnExit();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxThreadModule)
+};
+
IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
bool wxThreadModule::OnInit()
// Global initialization
+class wxThreadModule : public wxModule
+{
+public:
+ virtual bool OnInit();
+ virtual void OnExit();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxThreadModule)
+};
+
IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
bool wxThreadModule::OnInit()
#include "wx/utils.h"
#include "wx/dialog.h"
#include "wx/msgdlg.h"
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
#include "wx/dnd.h"
#endif
#include "wx/menu.h"
m_isShown = FALSE;
m_isEnabled = TRUE;
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
m_dropTarget = (wxDropTarget*) NULL;
#endif
m_resizing = FALSE;
{
m_hasVMT = FALSE;
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
if (m_dropTarget) delete m_dropTarget;
#endif
m_isShown = FALSE;
m_isEnabled = TRUE;
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
m_dropTarget = (wxDropTarget *) NULL;
#endif
m_resizing = FALSE;
return TRUE;
}
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
{
#include "wx/memory.h"
#include "wx/font.h"
#include "wx/settings.h"
-#ifdef wxUSE_WX_RESOURCES
+#if wxUSE_WX_RESOURCES
#include "wx/resource.h"
#endif
#include "wx/module.h"
#include "wx/image.h"
-#ifdef wxUSE_THREADS
+#if wxUSE_THREADS
#include "wx/thread.h"
#endif
#include "unistd.h"
gint wxapp_idle_callback( gpointer WXUNUSED(data) )
{
if (wxTheApp) while (wxTheApp->ProcessIdle()) {}
-#ifdef wxUSE_THREADS
+#if wxUSE_THREADS
wxMutexGuiLeave();
#endif
usleep(10000);
-#ifdef wxUSE_THREADS
+#if wxUSE_THREADS
wxMutexGuiEnter();
#endif
return TRUE;
wxInitializeStockLists();
wxInitializeStockObjects();
-#ifdef wxUSE_WX_RESOURCES
+#if wxUSE_WX_RESOURCES
wxTheResourceCache = new wxResourceCache(wxKEY_STRING);
wxInitializeResourceSystem();
wxDELETE(wxTheFontNameDirectory);
wxDeleteStockObjects();
-#ifdef wxUSE_WX_RESOURCES
+#if wxUSE_WX_RESOURCES
wxFlushResources();
wxDELETE(wxTheResourceCache);
#include "wx/clipbrd.h"
-#ifdef wxUSE_CLIPBOARD
+#if wxUSE_CLIPBOARD
#include "glib.h"
#include "gdk/gdk.h"
#include "wx/combobox.h"
-#ifdef wxUSE_COMBOBOX
+#if wxUSE_COMBOBOX
#include <wx/intl.h>
#pragma interface
#endif
+
+#include "wx/defs.h"
+
+#if wxUSE_POSTSCRIPT
+
#include "wx/postscrp.h"
#include "wx/dcmemory.h"
#include "wx/utils.h"
}
}
+#endif
+ // wxUSE_POSTSCRIPT
#include "wx/dnd.h"
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
#include "wx/window.h"
#include "wx/app.h"
#include "wx/intl.h"
#include "wx/checklst.h"
+#if wxUSE_DRAG_AND_DROP
+#include "wx/dnd.h"
+#endif
+
#include "gdk/gdk.h"
#include "gtk/gtk.h"
ConnectWidget( list_item );
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
#ifndef NEW_GTK_DND_CODE
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
#endif
return -1;
}
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
{
wxCHECK_RET( m_list != NULL, "invalid listbox" );
#include "wx/menu.h"
#include "wx/log.h"
#include "wx/intl.h"
+#include "wx/app.h"
#include "gdk/gdk.h"
#include "gtk/gtk.h"
static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
{
+ wxYield();
+
int id = menu->FindMenuIdByMenuItem(widget);
/* should find it for normal (not popup) menu */
pthread_exit(status);
}
-void wxThread::TestDestroy()
+bool wxThread::TestDestroy()
{
if (p_internal->state == STATE_PAUSING)
{
}
}
pthread_testcancel();
+
+ return TRUE; /* what is this for? */
}
bool wxThread::IsMain()
// wxThreadModule
//--------------------------------------------------------------------
+class wxThreadModule : public wxModule
+{
+public:
+ virtual bool OnInit();
+ virtual void OnExit();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxThreadModule)
+};
+
IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
bool wxThreadModule::OnInit()
// Global initialization
+class wxThreadModule : public wxModule
+{
+public:
+ virtual bool OnInit();
+ virtual void OnExit();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxThreadModule)
+};
+
IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
bool wxThreadModule::OnInit()
#include "wx/utils.h"
#include "wx/dialog.h"
#include "wx/msgdlg.h"
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
#include "wx/dnd.h"
#endif
#include "wx/menu.h"
m_isShown = FALSE;
m_isEnabled = TRUE;
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
m_dropTarget = (wxDropTarget*) NULL;
#endif
m_resizing = FALSE;
{
m_hasVMT = FALSE;
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
if (m_dropTarget) delete m_dropTarget;
#endif
m_isShown = FALSE;
m_isEnabled = TRUE;
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
m_dropTarget = (wxDropTarget *) NULL;
#endif
m_resizing = FALSE;
return TRUE;
}
-#ifdef wxUSE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
{
// wxThreadModule
//--------------------------------------------------------------------
+class wxThreadModule : public wxModule
+{
+public:
+ virtual bool OnInit();
+ virtual void OnExit();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxThreadModule)
+};
+
IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
bool wxThreadModule::OnInit()