From: Vadim Zeitlin Date: Wed, 14 Oct 1998 23:53:24 +0000 (+0000) Subject: minor changes a bit everywhere + a small wxLog change (Enable()/IsEnabled() X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c085e333984dc079a001cd3f581aeb1f51a1f227?hp=2d0a075d901994630d4142d0643a292191338ec0 minor changes a bit everywhere + a small wxLog change (Enable()/IsEnabled() added) + wxTimer member vars are made protected again (but a friend decl added for the callback) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@831 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/log.h b/include/wx/log.h index afabcbac84..219301b80f 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -75,13 +75,20 @@ public: // ctor wxLog(); + // these functions allow to completely disable all log messages + // is logging disabled now? + static bool IsEnabled() { return ms_doLog; } + // change the flag state, return the previous one + static bool EnableLogging(bool doIt = TRUE) + { bool doLogOld = ms_doLog; ms_doLog = doIt; return doLogOld; } + // sink function static void OnLog(wxLogLevel level, const char *szString) { - wxLog *pLogger = GetActiveTarget(); - if ( pLogger ) - { - pLogger->DoLog(level, szString); + if ( IsEnabled() ) { + wxLog *pLogger = GetActiveTarget(); + if ( pLogger ) + pLogger->DoLog(level, szString); } } @@ -99,10 +106,8 @@ public: // get current log target, will call wxApp::CreateLogTarget() to create one // if none exists static wxLog *GetActiveTarget(); - // change log target, pLogger = NULL disables logging. if bNoFlashOld is true, - // the old log target isn't flashed which might lead to loss of messages! - // returns the previous log target - static wxLog *SetActiveTarget(wxLog *pLogger, bool bNoFlashOld = FALSE); + // change log target, pLogger may be NULL + static wxLog *SetActiveTarget(wxLog *pLogger); // functions controlling the default wxLog behaviour // verbose mode is activated by standard command-line '-verbose' option @@ -151,6 +156,7 @@ private: // static variables // ---------------- static wxLog *ms_pLogger; // currently active log sink + static bool ms_doLog; // FALSE => all logging disabled static bool ms_bAutoCreate; // automatically create new log targets? static wxTraceMask ms_ulTraceMask; // controls wxLogTrace behaviour }; @@ -293,12 +299,11 @@ void Foo() { class WXDLLEXPORT wxLogNull { public: - // ctor saves old log target, dtor restores it - wxLogNull() { m_pPrevLogger = wxLog::SetActiveTarget((wxLog *)NULL, TRUE); } - ~wxLogNull() { (void)wxLog::SetActiveTarget(m_pPrevLogger); } + wxLogNull() { m_flagOld = wxLog::EnableLogging(FALSE); } + ~wxLogNull() { (void)wxLog::EnableLogging(m_flagOld); } private: - wxLog *m_pPrevLogger; // old log target + bool m_flagOld; // the previous value of the wxLog::ms_doLog }; // ============================================================================ diff --git a/include/wx/msw/app.h b/include/wx/msw/app.h index 4b17c47a42..e319a318a1 100644 --- a/include/wx/msw/app.h +++ b/include/wx/msw/app.h @@ -57,7 +57,7 @@ class WXDLLEXPORT wxApp: public wxEvtHandler void OnEndSession(wxCloseEvent& event); void OnQueryEndSession(wxCloseEvent& event); -// Generic + // Generic virtual bool OnInit() { return FALSE; }; // No specific tasks to do here. @@ -67,6 +67,10 @@ class WXDLLEXPORT wxApp: public wxEvtHandler virtual int OnRun() { return MainLoop(); }; virtual int OnExit() { return 0; } + // called when a fatal exception occurs, this function should take care not + // to do anything which might provoke a nested exception! + virtual void OnFatalException() { } + inline void SetPrintMode(int mode) { m_printMode = mode; } inline int GetPrintMode() const { return m_printMode; } diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index 6506dccbec..8633deb50b 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -6,7 +6,7 @@ // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_PRIVATE_H_ @@ -52,18 +52,18 @@ wxFont WXDLLEXPORT wxCreateFontFromLogFont(LOGFONT *logFont); // , bool createNe # endif #endif -#if !defined(APIENTRY) // NT defines APIENTRY, 3.x not +#if !defined(APIENTRY) // NT defines APIENTRY, 3.x not #define APIENTRY FAR PASCAL #endif - + #ifdef __WIN32__ #define _EXPORT /**/ #else #define _EXPORT _export typedef signed short int SHORT ; #endif - -#if !defined(__WIN32__) // 3.x uses FARPROC for dialogs + +#if !defined(__WIN32__) // 3.x uses FARPROC for dialogs #define DLGPROC FARPROC #endif @@ -104,7 +104,7 @@ VOID WINAPI ibAdjustWindowRect( HWND hWnd, LPRECT lprc ) ; * Decide what window classes we're going to use * for this combination of CTl3D/FAFA settings */ - + #define STATIC_CLASS "STATIC" #define STATIC_FLAGS (SS_LEFT|WS_CHILD|WS_VISIBLE) #define CHECK_CLASS "BUTTON" @@ -151,8 +151,15 @@ void WXDLLEXPORT wxAddControlHandle(WXHWND hWnd, wxWindow *item); // Safely get the window text (i.e. without using fixed size buffer) extern wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd); +// Does this window style specify any border? +inline bool WXDLLEXPORT wxStyleHasBorder(long style) +{ + return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER | + wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0; +} + #if !defined(__WIN32__) && !defined(WS_EX_CLIENTEDGE) -#define WS_EX_CLIENTEDGE 0 + #define WS_EX_CLIENTEDGE 0 #endif #endif diff --git a/include/wx/msw/registry.h b/include/wx/msw/registry.h index 62d2f9a3ca..944bb8e53e 100644 --- a/include/wx/msw/registry.h +++ b/include/wx/msw/registry.h @@ -203,40 +203,12 @@ private: wxRegKey(const wxRegKey& key); // not implemented wxRegKey& operator=(const wxRegKey& key); // not implemented - WXHKEY m_hKey, // our handle + WXHKEY m_hKey, // our handle m_hRootKey; // handle of the top key (i.e. StdKey) wxString m_strKey; // key name (relative to m_hRootKey) MUTABLE long m_dwLastError; // last error (0 if none) }; -// ---------------------------------------------------------------------------- -// high level functions working with the registry -// ---------------------------------------------------------------------------- - -// file extensions and MIME types -// ------------------------------ - -// Look for and return the extension (with leading '.') which corresponds to -// MIME type strMimeType in pExt. -// -// Return value: true if MIME type was found, false otherwise -bool GetExtensionFromMimeType(wxString *pExt, const wxString& strMimeType); - -// Look for MIME type of the given extension, return TRUE if found. -bool GetMimeTypeFromExtension(wxString *pMimeType, const wxString& strExt); - -// Get file type from extension (it's not the same thing: for example, for -// the extension .txt the default file type is txtfile), return FALSE if not -// found. -bool GetFileTypeFromExtension(wxString *pFileType, const wxString& strExt); - -// Get the default icon from file type -class wxIcon; -bool GetFileTypeIcon(wxIcon *pIcon, const wxString& strFileType); - -// Get the description of files of this type -bool GetFileTypeDescription(wxString *pDesc, const wxString& strFileType); - #endif //_REGISTRY_H diff --git a/include/wx/msw/setup.h b/include/wx/msw/setup.h index ff69ed94c6..323da34925 100644 --- a/include/wx/msw/setup.h +++ b/include/wx/msw/setup.h @@ -79,7 +79,7 @@ #define wxUSE_SCROLLBAR 1 // Define 1 to compile contributed wxScrollBar class #define wxUSE_XPM_IN_X 1 -#define wxUSE_XPM_IN_MSW 0 +#define wxUSE_XPM_IN_MSW 1 // Define 1 to support the XPM package in wxBitmap, // separated by platform. If 1, you must link in // the XPM library to your applications. @@ -90,7 +90,7 @@ #define wxUSE_IMAGE_LOADING_IN_MSW 1 // Use dynamic DIB loading/saving code in utils/dib under MSW. -#define wxUSE_RESOURCE_LOADING_IN_MSW 0 +#define wxUSE_RESOURCE_LOADING_IN_MSW 1 // Use dynamic icon/cursor loading/saving code // under MSW. #define wxUSE_WX_RESOURCES 1 @@ -114,12 +114,12 @@ #define wxUSE_DYNAMIC_CLASSES 1 // If 1, enables provision of run-time type information. // NOW MANDATORY: don't change. -#define wxUSE_MEMORY_TRACING 1 +#define wxUSE_MEMORY_TRACING 0 // If 1, enables debugging versions of wxObject::new and // wxObject::delete *IF* WXDEBUG is also defined. // WARNING: this code may not work with all architectures, especially // if alignment is an issue. -#define wxUSE_DEBUG_CONTEXT 1 +#define wxUSE_DEBUG_CONTEXT 0 // If 1, enables wxDebugContext, for // writing error messages to file, etc. // If WXDEBUG is not defined, will still use @@ -128,7 +128,7 @@ // since you may well need to output // an error log in a production // version (or non-debugging beta) -#define wxUSE_GLOBAL_MEMORY_OPERATORS 1 +#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 // In debug mode, cause new and delete to be redefined globally. // If this causes problems (e.g. link errors), set this to 0. @@ -139,7 +139,7 @@ #define wxUSE_C_MAIN 0 // Set to 1 to use main.c instead of main.cpp (UNIX only) -#define wxUSE_ODBC 1 +#define wxUSE_ODBC 0 // Define 1 to use ODBC classes #define wxUSE_IOSTREAMH 1 @@ -199,7 +199,7 @@ #define wxUSE_PENWINDOWS 0 // Set to 1 to use PenWindows -#define wxUSE_OWNER_DRAWN 0 +#define wxUSE_OWNER_DRAWN 1 // Owner-drawn menus and listboxes #define wxUSE_NATIVE_STATUSBAR 1 diff --git a/include/wx/msw/timer.h b/include/wx/msw/timer.h index 1db218cbfc..8ce875f657 100644 --- a/include/wx/msw/timer.h +++ b/include/wx/msw/timer.h @@ -20,6 +20,8 @@ class WXDLLEXPORT wxTimer : public wxObject { +friend void wxProcessTimer(wxTimer& timer); + public: wxTimer(); ~wxTimer(); @@ -34,7 +36,7 @@ public: int Interval() const { return milli; }; bool OneShot() const { return oneShot; } -public: +protected: bool oneShot ; int milli ; int lastMilli ; diff --git a/include/wx/msw/wx.rc b/include/wx/msw/wx.rc index a3877551d7..2b9d28e6a7 100644 --- a/include/wx/msw/wx.rc +++ b/include/wx/msw/wx.rc @@ -96,9 +96,9 @@ WXCURSOR_BLANK CURSOR DISCARDABLE "wx/msw/blank.cur" // Default Icons // -wxDEFAULT_FRAME ICON "wx/msw/std.ico" -wxDEFAULT_MDIPARENTFRAME ICON "wx/msw/mdi.ico" -wxDEFAULT_MDICHILDFRAME ICON "wx/msw/child.ico" +//wxDEFAULT_FRAME ICON "wx/msw/std.ico" +//wxDEFAULT_MDIPARENTFRAME ICON "wx/msw/mdi.ico" +//wxDEFAULT_MDICHILDFRAME ICON "wx/msw/child.ico" ////////////////////////////////////////////////////////////////////////////// // diff --git a/src/common/log.cpp b/src/common/log.cpp index d890f0b882..8f7ebe11fd 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -258,6 +258,8 @@ wxLog *wxLog::GetActiveTarget() ms_pLogger = wxTheApp->CreateLogTarget(); #endif + s_bInGetActiveTarget = FALSE; + // do nothing if it fails - what can we do? } } @@ -265,15 +267,17 @@ wxLog *wxLog::GetActiveTarget() return ms_pLogger; } -wxLog *wxLog::SetActiveTarget(wxLog *pLogger, bool bNoFlashOld) +wxLog *wxLog::SetActiveTarget(wxLog *pLogger) { - // flush the old messages before changing - if ( (ms_pLogger != NULL) && !bNoFlashOld ) { + if ( ms_pLogger != NULL ) { + // flush the old messages before changing because otherwise they might + // get lost later if this target is not restored ms_pLogger->Flush(); } wxLog *pOldLogger = ms_pLogger; ms_pLogger = pLogger; + return pOldLogger; } @@ -779,8 +783,7 @@ void wxLogWindow::DoLogString(const char *szString) pText->WriteText(szString); pText->WriteText("\n"); // "\n" ok here (_not_ "\r\n") - // ensure that the line can be seen - // @@@ TODO + // TODO ensure that the line can be seen } wxFrame *wxLogWindow::GetFrame() const @@ -794,11 +797,13 @@ void wxLogWindow::OnFrameCreate(wxFrame *WXUNUSED(frame)) void wxLogWindow::OnFrameDelete(wxFrame *WXUNUSED(frame)) { - m_pLogFrame = (wxLogFrame *) NULL; + m_pLogFrame = (wxLogFrame *)NULL; } wxLogWindow::~wxLogWindow() { + delete m_pOldLog; + // may be NULL if log frame already auto destroyed itself delete m_pLogFrame; } @@ -813,6 +818,7 @@ wxLogWindow::~wxLogWindow() // static variables // ---------------------------------------------------------------------------- wxLog *wxLog::ms_pLogger = (wxLog *) NULL; +bool wxLog::ms_doLog = TRUE; bool wxLog::ms_bAutoCreate = TRUE; wxTraceMask wxLog::ms_ulTraceMask = (wxTraceMask)0; @@ -941,6 +947,8 @@ void wxOnAssert(const char *szFile, int nLine, const char *szMsg) if ( s_bInAssert ) { // He-e-e-e-elp!! we're trapped in endless loop Trap(); + + return; } s_bInAssert = TRUE; diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 0182dcc3a0..ef1aa4bd95 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -51,7 +51,6 @@ #endif // use debug CRT functions for memory leak detections in VC++ -/* This still doesn't work for me, Vadim. #if defined(__WXDEBUG__) && defined(_MSC_VER) // VC++ uses this macro as debug/release mode indicator #ifndef _DEBUG @@ -60,7 +59,6 @@ #include #endif -*/ extern char *wxBuffer; extern char *wxOsVersion; @@ -114,14 +112,12 @@ bool wxApp::Initialize() { wxBuffer = new char[1500]; -/* #if defined(__WXDEBUG__) && defined(_MSC_VER) // do check for memory leaks on program exit // (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free // deallocated memory which may be used to simulate low-memory condition) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); #endif // debug build under MS VC++ -*/ #if (WXDEBUG && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT #if defined(_WINDLL) @@ -352,7 +348,7 @@ void wxApp::ConvertToStandardCommandArgs(char* lpCmdLine) int count = 0; // Get application name - char name[500]; + char name[260]; // 260 is MAX_PATH value from windef.h ::GetModuleFileName(wxhInstance, name, WXSIZEOF(name)); // GNUWIN32 already fills in the first arg with the application name. diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index 32b1b32e2c..fb0b511b6d 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -83,8 +83,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if (want3D && ((m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER))) + if ( want3D || wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; m_hWnd = (WXHWND)CreateWindowEx(exStyle, "BUTTON", Label, diff --git a/src/msw/choice.cpp b/src/msw/choice.cpp index 8c4aede0bd..956e0e418c 100644 --- a/src/msw/choice.cpp +++ b/src/msw/choice.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -48,8 +48,8 @@ bool wxChoice::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) bool wxChoice::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - long style, + int n, const wxString choices[], + long style, const wxValidator& validator, const wxString& name) { @@ -63,9 +63,9 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, m_windowStyle = style; if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; int x = pos.x; int y = pos.y; @@ -82,14 +82,16 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if (want3D || (m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER)) + if ( want3D || wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; - HWND wx_combo = CreateWindowEx(exStyle, "COMBOBOX", NULL, + m_hWnd = (WXHWND)::CreateWindowEx(exStyle, "COMBOBOX", NULL, msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); + + wxCHECK_MSG( m_hWnd, FALSE, "Failed to create combobox" ); + /* #if CTL3D if (want3D) @@ -100,17 +102,17 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, #endif */ - m_hWnd = (WXHWND) wx_combo; - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND) wx_combo); + SubclassWin(m_hWnd); SetFont(* parent->GetFont()); int i; for (i = 0; i < n; i++) - SendMessage(wx_combo, CB_INSERTSTRING, i, (LONG)(const char *)choices[i]); - SendMessage(wx_combo, CB_SETCURSEL, i, 0); + { + Append(choices[i]); + } + SetSelection(n); SetSize(x, y, width, height); @@ -266,9 +268,9 @@ void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags) } WXHBRUSH wxChoice::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) + WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { - return 0; + return 0; } long wxChoice::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index bdef590146..db6801a3f3 100644 --- a/src/msw/combobox.cpp +++ b/src/msw/combobox.cpp @@ -6,7 +6,7 @@ // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -59,13 +59,13 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) } bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) + const wxString& value, + const wxPoint& pos, + const wxSize& size, + int n, const wxString choices[], + long style, + const wxValidator& validator, + const wxString& name) { SetName(name); SetValidator(validator); @@ -77,21 +77,22 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, m_windowStyle = style; if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; int x = pos.x; int y = pos.y; int width = size.x; int height = size.y; - long msStyle = WS_CHILD | WS_HSCROLL | WS_VSCROLL - | WS_TABSTOP | WS_VISIBLE | CBS_NOINTEGRALHEIGHT; + long msStyle = WS_CHILD | WS_HSCROLL | WS_VSCROLL | + WS_TABSTOP | WS_VISIBLE | CBS_NOINTEGRALHEIGHT; + if (m_windowStyle & wxCB_READONLY) msStyle |= CBS_DROPDOWNLIST; - else if (m_windowStyle & wxCB_SIMPLE) // A list (shown always) and edit control - msStyle |= CBS_SIMPLE; + else if (m_windowStyle & wxCB_SIMPLE) + msStyle |= CBS_SIMPLE; // A list (shown always) and edit control else msStyle |= CBS_DROPDOWN; @@ -103,14 +104,16 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if (want3D || (m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER)) + if ( want3D || wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; - HWND wx_combo = CreateWindowEx(exStyle, "COMBOBOX", NULL, + m_hWnd = (WXHWND)::CreateWindowEx(exStyle, "COMBOBOX", NULL, msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); + + wxCHECK_MSG( m_hWnd, FALSE, "Failed to create combobox" ); + /* #if CTL3D if (want3D) @@ -121,20 +124,23 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, #endif */ - m_hWnd = (WXHWND)wx_combo; - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND)wx_combo); + SubclassWin(m_hWnd); SetFont(* parent->GetFont()); int i; for (i = 0; i < n; i++) - SendMessage(wx_combo, CB_INSERTSTRING, i, (LONG)(const char *)choices[i]); - SendMessage(wx_combo, CB_SETCURSEL, i, 0); + { + Append(choices[i]); + } + + SetSelection(i); SetSize(x, y, width, height); - if ( value != "" ) - SetWindowText(wx_combo, (const char *)value); + if ( !value.IsEmpty() ) + { + SetValue(value); + } return TRUE; } diff --git a/src/msw/dcclient.cpp b/src/msw/dcclient.cpp index 48f1c0345c..b813a115be 100644 --- a/src/msw/dcclient.cpp +++ b/src/msw/dcclient.cpp @@ -99,8 +99,8 @@ static PAINTSTRUCT g_paintStruct; // Don't call Begin/EndPaint if it's already been called: // for example, if calling a base class OnPaint. -WXHDC wxPaintDC::ms_PaintHDC = 0; -size_t wxPaintDC::ms_PaintCount = 0; // count of ms_PaintHDC usage +WXHDC wxPaintDC::ms_PaintHDC = 0; +size_t wxPaintDC::ms_PaintCount = 0; // count of ms_PaintHDC usage wxPaintDC::wxPaintDC(wxWindow *canvas) { @@ -132,7 +132,7 @@ wxPaintDC::~wxPaintDC() m_hDC = NULL; ms_PaintHDC = NULL; } - //else: ms_PaintHDC still in use + else { }//: ms_PaintHDC still in use } } diff --git a/src/msw/listbox.cpp b/src/msw/listbox.cpp index 711d73cf00..2dd43b3b64 100644 --- a/src/msw/listbox.cpp +++ b/src/msw/listbox.cpp @@ -198,35 +198,33 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if ( want3D || (m_windowStyle & wxSIMPLE_BORDER) - || (m_windowStyle & wxRAISED_BORDER) - || (m_windowStyle & wxSUNKEN_BORDER) - || (m_windowStyle & wxDOUBLE_BORDER) ) { + if ( want3D || wxStyleHasBorder(m_windowStyle) ) + { wstyle |= WS_BORDER; } - HWND wx_list = CreateWindowEx(exStyle, "LISTBOX", NULL, + m_hWnd = (WXHWND)::CreateWindowEx(exStyle, "LISTBOX", NULL, wstyle | WS_CHILD, 0, 0, 0, 0, (HWND)parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); - m_hWnd = (WXHWND)wx_list; + wxCHECK_MSG( m_hWnd, FALSE, "Failed to create listbox" ); #if CTL3D if (want3D) { - Ctl3dSubclassCtl(wx_list); + Ctl3dSubclassCtl(hwnd); m_useCtl3D = TRUE; } #endif // Subclass again to catch messages - SubclassWin((WXHWND)wx_list); + SubclassWin(m_hWnd); size_t ui; for (ui = 0; ui < (size_t)n; ui++) { - SendMessage(wx_list, LB_ADDSTRING, 0, (LPARAM)(const char *)choices[ui]); + Append(choices[ui]); } #if wxUSE_OWNER_DRAWN @@ -236,19 +234,19 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, wxOwnerDrawn *pNewItem = CreateItem(ui); pNewItem->SetName(choices[ui]); m_aItems.Add(pNewItem); - ListBox_SetItemData(wx_list, ui, pNewItem); + ListBox_SetItemData(hwnd, ui, pNewItem); } } #endif - if ((m_windowStyle & wxLB_MULTIPLE) == 0) - SendMessage(wx_list, LB_SETCURSEL, 0, 0); + if ( (m_windowStyle & wxLB_MULTIPLE) == 0 ) + SendMessage(hwnd, LB_SETCURSEL, 0, 0); SetFont(* parent->GetFont()); SetSize(x, y, width, height); - ShowWindow(wx_list, SW_SHOW); + Show(TRUE); return TRUE; } diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 584df93945..6a0e5dec10 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -97,8 +97,7 @@ bool wxListCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, con // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if (want3D || (m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER)) + if ( want3D || wxStyleHasBorder(m_windowStyle) ) wstyle |= WS_BORDER; wstyle |= LVS_SHAREIMAGELISTS; diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp index a1cbdedce7..d4ea423c08 100644 --- a/src/msw/radiobox.cpp +++ b/src/msw/radiobox.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -125,23 +125,30 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, WXDWORD exStyle = Determine3DEffects(0, &want3D) ; // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if (want3D && ((m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER))) + if ( want3D || wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; - m_hWnd = (WXHWND) CreateWindowEx((DWORD) exStyle, GROUP_CLASS, (title == "" ? NULL : (const char *)title), - msStyle, - 0,0,0,0, - (HWND) parent->GetHWND(), (HMENU) m_windowId, wxGetInstance(), NULL) ; - HWND the_handle = (HWND) parent->GetHWND() ; + m_hWnd = (WXHWND)::CreateWindowEx + ( + (DWORD)exStyle, + GROUP_CLASS, + title, + msStyle, + 0, 0, 0, 0, + the_handle, + (HMENU)m_windowId, + wxGetInstance(), + NULL + ); + #if CTL3D if (want3D) { - Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; + Ctl3dSubclassCtl((HWND)m_hWnd); + m_useCtl3D = TRUE; } #endif @@ -171,7 +178,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, if (want3D) { Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; + m_useCtl3D = TRUE; } #endif if (GetFont()) @@ -235,8 +242,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, WXDWORD exStyle = Determine3DEffects(0, &want3D) ; // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if (want3D && ((m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER))) + if ( want3D || wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; m_hWnd = (WXHWND) CreateWindowEx((DWORD) exStyle, GROUP_CLASS, (title == "" ? NULL : (const char *)title), @@ -250,7 +256,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, if (want3D) { Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; + m_useCtl3D = TRUE; } #endif @@ -283,7 +289,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, if (want3D) { Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; + m_useCtl3D = TRUE; } #endif m_subControls.Append((wxObject *)newId); @@ -651,7 +657,7 @@ void wxRadioBox::Show(int item, bool show) } WXHBRUSH wxRadioBox::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) + WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { #if CTL3D if ( m_useCtl3D ) @@ -701,11 +707,11 @@ bool wxRadioBox::SetStringSelection (const wxString& s) bool wxRadioBox::ContainsHWND(WXHWND hWnd) const { - int i; + int i; for (i = 0; i < Number(); i++) if (GetRadioButtons()[i] == hWnd) return TRUE; - return FALSE; + return FALSE; } void wxRadioBox::Command (wxCommandEvent & event) @@ -716,7 +722,7 @@ void wxRadioBox::Command (wxCommandEvent & event) long wxRadioBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - if (nMsg == WM_NCHITTEST) + if (nMsg == WM_NCHITTEST) { int xPos = LOWORD(lParam); // horizontal position of cursor int yPos = HIWORD(lParam); // vertical position of cursor @@ -729,6 +735,6 @@ long wxRadioBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) return (long)HTCLIENT; } - return wxControl::MSWWindowProc(nMsg, wParam, lParam); + return wxControl::MSWWindowProc(nMsg, wParam, lParam); } diff --git a/src/msw/radiobut.cpp b/src/msw/radiobut.cpp index cb74479b3a..a9957ebc05 100644 --- a/src/msw/radiobut.cpp +++ b/src/msw/radiobut.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -34,7 +34,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) #endif bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxString& label, + const wxString& label, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, @@ -49,9 +49,9 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, SetForegroundColour(parent->GetForegroundColour()); if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; int x = pos.x; int y = pos.y; @@ -72,18 +72,20 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if (want3D && ((m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER))) + if ( want3D || wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; m_hWnd = (WXHWND) CreateWindowEx(exStyle, RADIO_CLASS, (const char *)label, msStyle,0,0,0,0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); + + wxCHECK_MSG( m_hWnd, FALSE, "Failed to create radiobutton" ); + #if CTL3D if (want3D) { Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; + m_useCtl3D = TRUE; } #endif @@ -141,7 +143,7 @@ bool wxRadioButton::GetValue(void) const } WXHBRUSH wxRadioButton::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) + WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { #if CTL3D if ( m_useCtl3D ) @@ -177,7 +179,7 @@ void wxRadioButton::Command (wxCommandEvent & event) // Not implemented #if 0 bool wxBitmapRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxBitmap *bitmap, + const wxBitmap *bitmap, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, @@ -191,9 +193,9 @@ bool wxBitmapRadioButton::Create(wxWindow *parent, wxWindowID id, SetForegroundColour(parent->GetForegroundColour()); if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; int x = pos.x; int y = pos.y; @@ -211,11 +213,14 @@ bool wxBitmapRadioButton::Create(wxWindow *parent, wxWindowID id, m_hWnd = (WXHWND) CreateWindowEx(MakeExtendedStyle(m_windowStyle), RADIO_CLASS, "toggle", msStyle,0,0,0,0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); + + wxCHECK_MSG( m_hWnd, "Failed to create radio button", FALSE ); + #if CTL3D if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS)) { Ctl3dSubclassCtl((HWND) GetHWND()); - m_useCtl3D = TRUE; + m_useCtl3D = TRUE; } #endif diff --git a/src/msw/registry.cpp b/src/msw/registry.cpp index 60296ca5ea..6269c4de4a 100644 --- a/src/msw/registry.cpp +++ b/src/msw/registry.cpp @@ -801,142 +801,3 @@ void RemoveTrailingSeparator(wxString& str) if ( !str.IsEmpty() && str.Last() == REG_SEPARATOR ) str.Truncate(str.Len() - 1); } - -// ============================================================================ -// global public functions -// ============================================================================ - -bool GetExtensionFromMimeType(wxString *pExt, const wxString& strMimeType) -{ - // @@@ VZ: I don't know of any official documentation which mentions this - // location, but as a matter of fact IE uses it, so why not we? - static const char *szMimeDbase = "MIME\\Database\\Content Type\\"; - - wxString strKey = szMimeDbase; - strKey << strMimeType; - - // suppress possible error messages - wxLogNull nolog; - wxRegKey key(wxRegKey::HKCR, strKey); - if ( key.Open() ) { - if ( key.QueryValue("Extension", *pExt) ) - return TRUE; - } - - // no such MIME type or no extension for it - return FALSE; -} - -bool GetMimeTypeFromExtension(wxString *pMimeType, const wxString& strExt) -{ - wxCHECK( !strExt.IsEmpty(), FALSE ); - - // add the leading point if necessary - wxString str; - if ( strExt[0] != '.' ) { - str = '.'; - } - str << strExt; - - // suppress possible error messages - wxLogNull nolog; - wxRegKey key(wxRegKey::HKCR, str); - if ( key.Open() ) { - if ( key.QueryValue("Content Type", *pMimeType) ) - return TRUE; - } - - // no such extension or no content-type - return FALSE; -} - -bool GetFileTypeFromExtension(wxString *pFileType, const wxString& strExt) -{ - wxCHECK( !strExt.IsEmpty(), FALSE ); - - // add the leading point if necessary - wxString str; - if ( strExt[0] != '.' ) { - str = '.'; - } - str << strExt; - - // suppress possible error messages - wxLogNull nolog; - wxRegKey key(wxRegKey::HKCR, str); - if ( key.Open() ) { - if ( key.QueryValue("", *pFileType) ) // it's the default value of the key - return TRUE; - } - - // no such extension or no value - return FALSE; -} - -bool GetFileTypeIcon(wxIcon *pIcon, const wxString& strFileType) -{ - wxCHECK( !strFileType.IsEmpty(), FALSE ); - - wxString strIconKey; - strIconKey << strFileType << REG_SEPARATOR << "DefaultIcon"; - - // suppress possible error messages - wxLogNull nolog; - wxRegKey key(wxRegKey::HKCR, strIconKey); - - if ( key.Open() ) { - wxString strIcon; - if ( key.QueryValue("", strIcon) ) { // it's the default value of the key - // the format is the following: , - // NB: icon index may be negative as well as positive and the full path - // may contain the environment variables inside '%' - wxString strFullPath = strIcon.Before(','), - strIndex = strIcon.Right(','); - - // index may be omitted, in which case Before(',') is empty and - // Right(',') is the whole string - if ( strFullPath.IsEmpty() ) { - strFullPath = strIndex; - strIndex = "0"; - } - - wxString strExpPath = wxExpandEnvVars(strFullPath); - int nIndex = atoi(strIndex); - - HICON hIcon = ExtractIcon(GetModuleHandle(NULL), strExpPath, nIndex); - switch ( (int)hIcon ) { - case 0: // means no icons were found - case 1: // means no such file or it wasn't a DLL/EXE/OCX/ICO/... - wxLogDebug("incorrect registry entry '%s': no such icon.", - GetFullName(&key)); - break; - - default: - pIcon->SetHICON((WXHICON)hIcon); - return TRUE; - } - } - } - - // no such file type or no value or incorrect icon entry - return FALSE; -} - -bool GetFileTypeDescription(wxString *pDesc, const wxString& strFileType) -{ - wxCHECK( !strFileType.IsEmpty(), FALSE ); - - // suppress possible error messages - wxLogNull nolog; - wxRegKey key(wxRegKey::HKCR, strFileType); - - if ( key.Open() ) { - if ( key.QueryValue("", *pDesc) ) // it's the default value of the key - return TRUE; - } - - // no such file type or no value - return FALSE; -} - - diff --git a/src/msw/stattext.cpp b/src/msw/stattext.cpp index b45ca5e0cb..e27866942b 100644 --- a/src/msw/stattext.cpp +++ b/src/msw/stattext.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -46,9 +46,9 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id, SetForegroundColour(parent->GetForegroundColour()) ; if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; int x = pos.x; int y = pos.y; @@ -67,15 +67,16 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id, // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if ((m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER)) + if ( wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; - HWND static_item = CreateWindowEx(MakeExtendedStyle(m_windowStyle), "STATIC", (const char *)label, + m_hWnd = (WXHWND)::CreateWindowEx(MakeExtendedStyle(m_windowStyle), "STATIC", (const char *)label, msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); + wxCHECK_MSG( m_hWnd, FALSE, "Failed to create static ctrl" ); + #if CTL3D /* if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS)) @@ -83,12 +84,11 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id, */ #endif - m_hWnd = (WXHWND)static_item; - - SubclassWin((WXHWND)static_item); + SubclassWin(m_hWnd); SetFont(* parent->GetFont()); SetSize(x, y, width, height); + return TRUE; } @@ -166,14 +166,14 @@ void wxStaticText::SetLabel(const wxString& label) } WXHBRUSH wxStaticText::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) + WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { /* #if CTL3D if ( m_useCtl3D ) { HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - + if (hbrush != (HBRUSH) 0) return hbrush; else diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index d9ae39cc62..65fe3eac81 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -67,9 +67,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_CHAR(wxTextCtrl::OnChar) - EVT_DROP_FILES(wxTextCtrl::OnDropFiles) - EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground) + EVT_CHAR(wxTextCtrl::OnChar) + EVT_DROP_FILES(wxTextCtrl::OnDropFiles) + EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground) END_EVENT_TABLE() #endif @@ -85,11 +85,11 @@ wxTextCtrl::wxTextCtrl(void) } bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) + const wxString& value, + const wxPoint& pos, + const wxSize& size, long style, + const wxValidator& validator, + const wxString& name) { m_fileName = ""; SetName(name); @@ -106,9 +106,9 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, SetForegroundColour(parent->GetForegroundColour()) ; if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; int x = pos.x; int y = pos.y; @@ -129,9 +129,10 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, // m_globalHandle = (WXHGLOBAL) GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, // 256L); #endif + long msStyle = ES_LEFT | WS_VISIBLE | WS_CHILD | WS_TABSTOP; if (m_windowStyle & wxTE_MULTILINE) - msStyle |= ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL ; // WS_BORDER + msStyle |= ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL ; // WS_BORDER else msStyle |= ES_AUTOHSCROLL ; @@ -146,16 +147,14 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, char *windowClass = "EDIT"; #if defined(__WIN95__) if ( m_windowStyle & wxTE_MULTILINE ) -#else - if ( FALSE ) -#endif { - msStyle |= ES_AUTOVSCROLL; - m_isRich = TRUE; - windowClass = "RichEdit" ; + msStyle |= ES_AUTOVSCROLL; + m_isRich = TRUE; + windowClass = "RichEdit" ; } else - m_isRich = FALSE; +#endif + m_isRich = FALSE; bool want3D; WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; @@ -166,36 +165,36 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, if (m_windowStyle & wxSIMPLE_BORDER) { windowClass = "EDIT"; - m_isRich = FALSE; + m_isRich = FALSE; } #endif // Even with extended styles, need to combine with WS_BORDER // for them to look right. - if (want3D || (m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER)) + if ( want3D || wxStyleHasBorder(m_windowStyle) ) msStyle |= WS_BORDER; - HWND edit = CreateWindowEx(exStyle, windowClass, NULL, + m_hWnd = (WXHWND)::CreateWindowEx(exStyle, windowClass, NULL, msStyle, 0, 0, 0, 0, (HWND) ((wxWindow*)parent)->GetHWND(), (HMENU)m_windowId, m_globalHandle ? (HINSTANCE) m_globalHandle : wxGetInstance(), NULL); + wxCHECK_MSG( m_hWnd, FALSE, "Failed to create text ctrl" ); + #if CTL3D if ( want3D ) { - Ctl3dSubclassCtl(edit); - m_useCtl3D = TRUE; + Ctl3dSubclassCtl((HWND)m_hWnd); + m_useCtl3D = TRUE; } #endif - m_hWnd = (WXHWND)edit; - #if defined(__WIN95__) if (m_isRich) { - // Have to enable events - ::SendMessage(edit, EM_SETEVENTMASK, 0, ENM_CHANGE | ENM_DROPFILES | ENM_SELCHANGE | ENM_UPDATE); + // Have to enable events + ::SendMessage((HWND)m_hWnd, EM_SETEVENTMASK, 0, + ENM_CHANGE | ENM_DROPFILES | ENM_SELCHANGE | ENM_UPDATE); } #endif @@ -203,19 +202,21 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, if ( parent->GetFont() && parent->GetFont()->Ok() ) { - SetFont(* parent->GetFont()); + SetFont(* parent->GetFont()); } else { - SetFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); + SetFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); } SetSize(x, y, width, height); // Causes a crash for Symantec C++ and WIN32 for some reason #if !(defined(__SC__) && defined(__WIN32__)) - if (value != "") - SetWindowText(edit, (const char *)value); + if ( !value.IsEmpty() ) + { + SetValue(value); + } #endif return TRUE; @@ -224,39 +225,39 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, // Make sure the window style (etc.) reflects the HWND style (roughly) void wxTextCtrl::AdoptAttributesFromHWND(void) { - wxWindow::AdoptAttributesFromHWND(); + wxWindow::AdoptAttributesFromHWND(); - HWND hWnd = (HWND) GetHWND(); - long style = GetWindowLong((HWND) hWnd, GWL_STYLE); + HWND hWnd = (HWND) GetHWND(); + long style = GetWindowLong((HWND) hWnd, GWL_STYLE); char buf[256]; #ifndef __WIN32__ - GetClassName((HWND) hWnd, buf, 256); + GetClassName((HWND) hWnd, buf, 256); #else #ifdef UNICODE - GetClassNameW((HWND) hWnd, buf, 256); + GetClassNameW((HWND) hWnd, buf, 256); #else - GetClassNameA((HWND) hWnd, buf, 256); + GetClassNameA((HWND) hWnd, buf, 256); #endif #endif - wxString str(buf); - str.UpperCase(); - - if (str == "EDIT") - m_isRich = FALSE; - else - m_isRich = TRUE; - - if (style & ES_MULTILINE) - m_windowStyle |= wxTE_MULTILINE; - if (style & ES_PASSWORD) - m_windowStyle |= wxTE_PASSWORD; - if (style & ES_READONLY) - m_windowStyle |= wxTE_READONLY; - if (style & ES_WANTRETURN) - m_windowStyle |= wxTE_PROCESS_ENTER; + wxString str(buf); + str.UpperCase(); + + if (str == "EDIT") + m_isRich = FALSE; + else + m_isRich = TRUE; + + if (style & ES_MULTILINE) + m_windowStyle |= wxTE_MULTILINE; + if (style & ES_PASSWORD) + m_windowStyle |= wxTE_PASSWORD; + if (style & ES_READONLY) + m_windowStyle |= wxTE_READONLY; + if (style & ES_WANTRETURN) + m_windowStyle |= wxTE_PROCESS_ENTER; } void wxTextCtrl::SetupColours(void) @@ -272,7 +273,7 @@ wxString wxTextCtrl::GetValue(void) const GetWindowText((HWND) GetHWND(), s, length+1); wxString str(s); delete[] s; - return str; + return str; } void wxTextCtrl::SetValue(const wxString& value) @@ -539,13 +540,13 @@ bool wxTextCtrl::LoadFile(const wxString& file) while (!input.eof() && input.peek() != EOF) { input.getline(wxBuffer, 500); - int len = strlen(wxBuffer); - wxBuffer[len] = 13; - wxBuffer[len+1] = 10; - wxBuffer[len+2] = 0; - strcpy(tmp_buffer+pos, wxBuffer); - pos += strlen(wxBuffer); - no_lines++; + int len = strlen(wxBuffer); + wxBuffer[len] = 13; + wxBuffer[len+1] = 10; + wxBuffer[len+2] = 0; + strcpy(tmp_buffer+pos, wxBuffer); + pos += strlen(wxBuffer); + no_lines++; } // SendMessage((HWND) GetHWND(), WM_SETTEXT, 0, (LPARAM)tmp_buffer); @@ -571,7 +572,7 @@ bool wxTextCtrl::SaveFile(const wxString& file) ofstream output((char*) (const char*) theFile); if (output.bad()) - return FALSE; + return FALSE; // This will only save 64K max unsigned long nbytes = SendMessage((HWND) GetHWND(), WM_GETTEXTLENGTH, 0, 0); @@ -579,13 +580,13 @@ bool wxTextCtrl::SaveFile(const wxString& file) SendMessage((HWND) GetHWND(), WM_GETTEXT, (WPARAM)(nbytes+1), (LPARAM)tmp_buffer); char *pstr = tmp_buffer; - // Convert \r\n to just \n - while (*pstr) - { - if (*pstr != '\r') - output << *pstr; - pstr++; - } + // Convert \r\n to just \n + while (*pstr) + { + if (*pstr != '\r') + output << *pstr; + pstr++; + } farfree(tmp_buffer); SendMessage((HWND) GetHWND(), EM_SETMODIFY, FALSE, 0L); @@ -709,7 +710,7 @@ wxString wxTextCtrl::GetLineText(long lineNo) const *(WORD *)wxBuffer = 512; int noChars = (int)SendMessage(hWnd, EM_GETLINE, (WPARAM)lineNo, (LPARAM)wxBuffer); wxBuffer[noChars] = 0; - return wxString(wxBuffer); + return wxString(wxBuffer); } /* @@ -898,7 +899,7 @@ wxTextCtrl& wxTextCtrl::operator<<(const char c) } WXHBRUSH wxTextCtrl::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) + WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { #if CTL3D if ( m_useCtl3D ) @@ -927,13 +928,13 @@ WXHBRUSH wxTextCtrl::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, void wxTextCtrl::OnChar(wxKeyEvent& event) { - if ( (event.KeyCode() == WXK_RETURN) && (m_windowStyle & wxPROCESS_ENTER)) - { - wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); - event.SetEventObject( this ); - if ( GetEventHandler()->ProcessEvent(event) ) + if ( (event.KeyCode() == WXK_RETURN) && (m_windowStyle & wxPROCESS_ENTER)) + { + wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); + event.SetEventObject( this ); + if ( GetEventHandler()->ProcessEvent(event) ) return; - } + } else if ( event.KeyCode() == WXK_TAB ) { wxNavigationKeyEvent event; event.SetDirection(!(::GetKeyState(VK_SHIFT) & 0x100)); @@ -1059,24 +1060,24 @@ bool wxTextCtrl::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) #if defined(__WIN95__) bool wxTextCtrl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam) { - wxCommandEvent event(0, m_windowId); - int eventType = 0; - NMHDR *hdr1 = (NMHDR *) lParam; - switch ( hdr1->code ) - { - // Insert case code here - default : - return wxControl::MSWNotify(wParam, lParam); - break; - } - - event.SetEventObject( this ); - event.SetEventType(eventType); - - if ( !ProcessEvent(event) ) - return FALSE; - - return TRUE; + wxCommandEvent event(0, m_windowId); + int eventType = 0; + NMHDR *hdr1 = (NMHDR *) lParam; + switch ( hdr1->code ) + { + // Insert case code here + default : + return wxControl::MSWNotify(wParam, lParam); + break; + } + + event.SetEventObject( this ); + event.SetEventType(eventType); + + if ( !ProcessEvent(event) ) + return FALSE; + + return TRUE; } #endif #endif diff --git a/src/msw/timer.cpp b/src/msw/timer.cpp index 99cd51d92a..844e0b1f56 100644 --- a/src/msw/timer.cpp +++ b/src/msw/timer.cpp @@ -9,23 +9,34 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + #ifdef __GNUG__ -#pragma implementation "timer.h" + #pragma implementation "timer.h" #endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/app.h" + #include "wx/setup.h" + #include "wx/list.h" + #include "wx/app.h" #endif +#include "wx/intl.h" +#include "wx/log.h" + #include "wx/timer.h" #include "wx/msw/private.h" @@ -33,81 +44,113 @@ #include #if !defined(__SC__) && !defined(__GNUWIN32__) -#include -#endif -#ifdef __WIN32__ -#define _EXPORT /**/ -#else -#define _EXPORT _export + #include #endif +// ---------------------------------------------------------------------------- +// private functions +// ---------------------------------------------------------------------------- + wxList wxTimerList(wxKEY_INTEGER); UINT WINAPI _EXPORT wxTimerProc(HWND hwnd, WORD, int idTimer, DWORD); +// ---------------------------------------------------------------------------- +// macros +// ---------------------------------------------------------------------------- + +#ifdef __WIN32__ + #define _EXPORT /**/ +#else + #define _EXPORT _export +#endif + #if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) + IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) #endif +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// wxTimer class +// ---------------------------------------------------------------------------- wxTimer::wxTimer(void) { - milli = 0 ; - lastMilli = -1 ; - id = 0; + milli = 0 ; + lastMilli = -1 ; + id = 0; } wxTimer::~wxTimer(void) { - Stop(); + Stop(); - wxTimerList.DeleteObject(this); + wxTimerList.DeleteObject(this); } -bool wxTimer::Start(int milliseconds,bool mode) +bool wxTimer::Start(int milliseconds, bool mode) { - oneShot = mode ; - if (milliseconds < 0) - milliseconds = lastMilli; - - if (milliseconds <= 0) - return FALSE; - - lastMilli = milli = milliseconds; - - wxTimerList.DeleteObject(this); - TIMERPROC wxTimerProcInst = (TIMERPROC) MakeProcInstance((FARPROC)wxTimerProc, - wxGetInstance()); - - id = SetTimer(NULL, (UINT)(id ? id : 1), (UINT)milliseconds, wxTimerProcInst); - if (id > 0) - { - wxTimerList.Append(id, this); - return TRUE; - } - else return FALSE; + oneShot = mode ; + if (milliseconds < 0) + milliseconds = lastMilli; + + wxCHECK_MSG( milliseconds > 0, FALSE, "invalid value for timer timeour" ); + + lastMilli = milli = milliseconds; + + wxTimerList.DeleteObject(this); + TIMERPROC wxTimerProcInst = (TIMERPROC) + MakeProcInstance((FARPROC)wxTimerProc, wxGetInstance()); + + id = SetTimer(NULL, (UINT)(id ? id : 1), + (UINT)milliseconds, wxTimerProcInst); + if (id > 0) + { + wxTimerList.Append(id, this); + + return TRUE; + } + else + { + wxLogSysError(_("Couldn't create a timer")); + + return FALSE; + } } void wxTimer::Stop(void) { - if (id) { - KillTimer(NULL, (UINT)id); - wxTimerList.DeleteObject(this); /* @@@@ */ - } - id = 0 ; - milli = 0 ; + if (id) { + KillTimer(NULL, (UINT)id); + wxTimerList.DeleteObject(this); /* @@@@ */ + } + id = 0 ; + milli = 0 ; } -UINT WINAPI _EXPORT wxTimerProc(HWND WXUNUSED(hwnd), WORD, int idTimer, DWORD) +// ---------------------------------------------------------------------------- +// private functions +// ---------------------------------------------------------------------------- +static void wxProcessTimer(wxTimer& timer) { - wxNode *node = wxTimerList.Find((long)idTimer); - if (node) - { - wxTimer *timer = (wxTimer *)node->Data(); - if (timer->id==0) - return(0) ; // Avoid to process spurious timer events - if (timer->oneShot) - timer->Stop() ; - timer->Notify(); - } - return 0; + // Avoid to process spurious timer events + if ( timer.id == 0) + return; + + if ( timer.oneShot ) + timer.Stop(); + + timer.Notify(); } +UINT WINAPI _EXPORT wxTimerProc(HWND WXUNUSED(hwnd), WORD, int idTimer, DWORD) +{ + wxNode *node = wxTimerList.Find((long)idTimer); + + wxCHECK_MSG( node, 0, "bogus timer id in wxTimerProc" ); + + wxProcessTimer(*(wxTimer *)node->Data()); + + return 0; +} diff --git a/src/msw/window.cpp b/src/msw/window.cpp index e5a66c3c52..e80c644769 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -302,7 +302,7 @@ wxWindow::~wxWindow(void) if (m_sizerParent) m_sizerParent->RemoveChild((wxWindow *)this); #endif - + // wxWnd MSWDetachWindowMenu(); @@ -323,7 +323,7 @@ wxWindow::~wxWindow(void) m_globalHandle = 0; } #endif - + delete m_children; m_children = NULL; @@ -340,7 +340,7 @@ wxWindow::~wxWindow(void) if ( m_windowValidator ) delete m_windowValidator; - // Restore old Window proc, if required + // Restore old Window proc, if required // and remove hWnd <-> wxWindow association UnsubclassWin(); } @@ -381,7 +381,7 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id, #if wxUSE_DRAG_AND_DROP m_pDropTarget = NULL; #endif - + // MSW-specific m_hWnd = 0; m_winEnabled = TRUE; @@ -827,7 +827,7 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, HWND hWnd = (HWND) GetHWND(); HDC dc = ::GetDC(hWnd); - HFONT fnt = 0; + HFONT fnt = 0; HFONT was = 0; if (fontToUse && fontToUse->Ok()) { @@ -840,7 +840,7 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, GetTextExtentPoint(dc, (const char *)string, (int)string.Length(), &sizeRect); GetTextMetrics(dc, &tm); - if (fontToUse && fnt && was) + if (fontToUse && fnt && was) SelectObject(dc,was) ; ReleaseDC(hWnd, dc); @@ -954,7 +954,7 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) wxLogTrace(wxTraceMessages, "Processing %s(%lx, %lx)", wxGetMessageName(message), wParam, lParam); #endif // WXDEBUG - + HWND hWnd = (HWND)m_hWnd; switch (message) @@ -1020,7 +1020,7 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) else return MSWDefWindowProc(message, wParam, lParam ); break; } - + case WM_SIZE: { int width = LOWORD(lParam); @@ -1028,7 +1028,7 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) MSWOnSize(width, height, wParam); break; } - + case WM_MOVE: { wxMoveEvent event(wxPoint(LOWORD(lParam), HIWORD(lParam)), @@ -1044,7 +1044,7 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) MSWOnWindowPosChanging((void *)lParam); break; } - + case WM_RBUTTONDOWN: { int x = (DIMENSION_TYPE) LOWORD(lParam); @@ -1231,7 +1231,7 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) return MSWOnMeasureItem((int)wParam, (WXMEASUREITEMSTRUCT *)lParam); break; } - + case WM_KEYDOWN: // we consider these message "not interesting" if ( wParam == VK_SHIFT || wParam == VK_CONTROL ) @@ -1435,7 +1435,7 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) return 1L; break; } - + case WM_GETMINMAXINFO: { MINMAXINFO *info = (MINMAXINFO *)lParam; @@ -1450,7 +1450,7 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) return MSWDefWindowProc(message, wParam, lParam ); break; } - + case WM_GETDLGCODE: return MSWGetDlgCode(); @@ -1544,7 +1544,7 @@ void wxWindow::MSWCreate(int id, wxWindow *parent, const char *wclass, wxWindow m_hWnd = (WXHWND) ::CreateDialog(wxGetInstance(), dialog_template, hParent, (DLGPROC)dlgproc); #endif - + if (m_hWnd == 0) MessageBox(NULL, "Can't find dummy dialog template!\nCheck resource include path for finding wx.rc.", "wxWindows Error", MB_ICONEXCLAMATION | MB_OK); @@ -1638,7 +1638,7 @@ bool wxWindow::MSWOnDestroy(void) m_pDropTarget = NULL; } #endif - + return TRUE; } @@ -1662,7 +1662,7 @@ bool wxWindow::MSWOnNotify(WXWPARAM wParam, WXLPARAM lParam) NMHDR *hdr = (NMHDR *)lParam; HWND hWnd = (HWND)hdr->hwndFrom; wxWindow *win = wxFindWinFromHandle((WXHWND) hWnd); - + if ( win ) return win->MSWNotify(wParam, lParam); else @@ -1680,7 +1680,7 @@ bool wxWindow::MSWOnNotify(WXWPARAM wParam, WXLPARAM lParam) } return FALSE; - + #endif return FALSE; } @@ -1701,7 +1701,7 @@ bool wxWindow::MSWOnActivate(int state, bool WXUNUSED(minimized), WXHWND WXUNUSE #if WXDEBUG > 1 wxDebugMsg("wxWindow::MSWOnActivate %d\n", handle); #endif - + wxActivateEvent event(wxEVT_ACTIVATE, ((state == WA_ACTIVE) || (state == WA_CLICKACTIVE)), m_windowId); event.SetEventObject(this); @@ -1721,7 +1721,7 @@ bool wxWindow::MSWOnSetFocus(WXHWND WXUNUSED(hwnd)) if (m_caretShown) ::ShowCaret((HWND) GetHWND()); } - + wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId); event.SetEventObject(this); if (!GetEventHandler()->ProcessEvent(event)) @@ -1739,7 +1739,7 @@ bool wxWindow::MSWOnKillFocus(WXHWND WXUNUSED(hwnd)) { ::DestroyCaret(); } - + wxFocusEvent event(wxEVT_KILL_FOCUS, m_windowId); event.SetEventObject(this); if (!GetEventHandler()->ProcessEvent(event)) @@ -1752,7 +1752,7 @@ void wxWindow::MSWOnDropFiles(WXWPARAM wParam) #if WXDEBUG > 1 wxDebugMsg("wxWindow::MSWOnDropFiles %d\n", m_hWnd); #endif - + HDROP hFilesInfo = (HDROP) wParam; POINT dropPoint; DragQueryPoint(hFilesInfo, (LPPOINT) &dropPoint); @@ -1803,7 +1803,7 @@ bool wxWindow::MSWOnDrawItem(int id, WXDRAWITEMSTRUCT *itemStruct) ); } #endif // owner-drawn menus - + wxWindow *item = FindItem(id); #if wxUSE_DYNAMIC_CLASSES if (item && item->IsKindOf(CLASSINFO(wxControl))) @@ -1823,11 +1823,11 @@ bool wxWindow::MSWOnMeasureItem(int id, WXMEASUREITEMSTRUCT *itemStruct) wxMenuItem *pMenuItem = (wxMenuItem *)(pMeasureStruct->itemData); wxCHECK( pMenuItem->IsKindOf(CLASSINFO(wxMenuItem)), FALSE ); - return pMenuItem->OnMeasureItem(&pMeasureStruct->itemWidth, + return pMenuItem->OnMeasureItem(&pMeasureStruct->itemWidth, &pMeasureStruct->itemHeight); } #endif // owner-drawn menus - + wxWindow *item = FindItem(id); #if wxUSE_DYNAMIC_CLASSES if (item && item->IsKindOf(CLASSINFO(wxControl))) @@ -1920,7 +1920,7 @@ void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event) event.m_eventObject = win; win->GetEventHandler()->ProcessEvent(event2); } - + node = node->Next(); } } @@ -1938,12 +1938,12 @@ long wxWindow::Default() // Ignore 'fake' events (perhaps generated as a result of a separate real event) if (m_lastMsg == 0) return 0; - + #ifdef __WXDEBUG__ wxLogTrace(wxTraceMessages, "Forwarding %s to DefWindowProc.", wxGetMessageName(m_lastMsg)); #endif // WXDEBUG - + return this->MSWDefWindowProc(m_lastMsg, m_lastWParam, m_lastLParam); } @@ -2065,7 +2065,7 @@ bool wxWindow::MSWOnPaint(void) m_updateRegion = wxRegion(updateRect.left, updateRect.top, updateRect.right - updateRect.left, updateRect.bottom - updateRect.top); #endif - + wxPaintEvent event(m_windowId); event.SetEventObject(this); if (!GetEventHandler()->ProcessEvent(event)) @@ -2117,7 +2117,7 @@ bool wxWindow::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) sprintf(buf, "Looking for item %d...\n", id); wxDebugMsg(buf); #endif - + wxWindow *item = FindItem(id); if (item) { @@ -2506,7 +2506,7 @@ void wxWindow::MSWOnJoyDown(int joystick, int x, int y, WXUINT flags) change = wxJOY_BUTTON3; if (flags & JOY_BUTTON4CHG) change = wxJOY_BUTTON4; - + if (flags & JOY_BUTTON1) buttons |= wxJOY_BUTTON1; if (flags & JOY_BUTTON2) @@ -2515,11 +2515,11 @@ void wxWindow::MSWOnJoyDown(int joystick, int x, int y, WXUINT flags) buttons |= wxJOY_BUTTON3; if (flags & JOY_BUTTON4) buttons |= wxJOY_BUTTON4; - + wxJoystickEvent event(wxEVT_JOY_BUTTON_DOWN, buttons, joystick, change); event.SetPosition(wxPoint(x, y)); event.SetEventObject(this); - + GetEventHandler()->ProcessEvent(event); } @@ -2535,7 +2535,7 @@ void wxWindow::MSWOnJoyUp(int joystick, int x, int y, WXUINT flags) change = wxJOY_BUTTON3; if (flags & JOY_BUTTON4CHG) change = wxJOY_BUTTON4; - + if (flags & JOY_BUTTON1) buttons |= wxJOY_BUTTON1; if (flags & JOY_BUTTON2) @@ -2544,11 +2544,11 @@ void wxWindow::MSWOnJoyUp(int joystick, int x, int y, WXUINT flags) buttons |= wxJOY_BUTTON3; if (flags & JOY_BUTTON4) buttons |= wxJOY_BUTTON4; - + wxJoystickEvent event(wxEVT_JOY_BUTTON_UP, buttons, joystick, change); event.SetPosition(wxPoint(x, y)); event.SetEventObject(this); - + GetEventHandler()->ProcessEvent(event); } @@ -2563,11 +2563,11 @@ void wxWindow::MSWOnJoyMove(int joystick, int x, int y, WXUINT flags) buttons |= wxJOY_BUTTON3; if (flags & JOY_BUTTON4) buttons |= wxJOY_BUTTON4; - + wxJoystickEvent event(wxEVT_JOY_MOVE, buttons, joystick, 0); event.SetPosition(wxPoint(x, y)); event.SetEventObject(this); - + GetEventHandler()->ProcessEvent(event); } @@ -2582,11 +2582,11 @@ void wxWindow::MSWOnJoyZMove(int joystick, int z, WXUINT flags) buttons |= wxJOY_BUTTON3; if (flags & JOY_BUTTON4) buttons |= wxJOY_BUTTON4; - + wxJoystickEvent event(wxEVT_JOY_ZMOVE, buttons, joystick, 0); event.SetZPosition(z); event.SetEventObject(this); - + GetEventHandler()->ProcessEvent(event); } @@ -2640,7 +2640,7 @@ void wxWindow::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control) return; break; } - + if (!GetEventHandler()->ProcessEvent(event)) Default(); } @@ -3086,14 +3086,14 @@ void wxWindow::WarpPointer (int x_pos, int y_pos) // Move the pointer to (x_pos,y_pos) coordinates. They are expressed in // pixel coordinates, relatives to the canvas -- So, we first need to // substract origin of the window, then convert to screen position - + int x = x_pos; int y = y_pos; RECT rect; GetWindowRect ((HWND) GetHWND(), &rect); - + x += rect.left; y += rect.top; - + SetCursorPos (x, y); } @@ -3104,11 +3104,11 @@ void wxWindow::MSWDeviceToLogical (float *x, float *y) const bool wxWindow::MSWOnEraseBkgnd (WXHDC pDC) { wxDC dc ; - + dc.SetHDC(pDC); dc.SetWindow(this); dc.BeginDrawing(); - + wxEraseEvent event(m_windowId, &dc); event.m_eventObject = this; if (!GetEventHandler()->ProcessEvent(event)) @@ -3122,7 +3122,7 @@ bool wxWindow::MSWOnEraseBkgnd (WXHDC pDC) dc.EndDrawing(); dc.SelectOldObjects(pDC); } - + dc.SetHDC((WXHDC) NULL); return TRUE; } @@ -3155,7 +3155,7 @@ void wxWindow::OnEraseBackground(wxEraseEvent& event) void wxWindow::SetScrollRange(int orient, int range, bool refresh) { #if defined(__WIN95__) - + int range1 = range; // Try to adjust the range to cope with page size > 1 @@ -3315,7 +3315,7 @@ int wxWindow::GetScrollRange(int orient) const // October 10th: new range concept. maxPos += pageSize; #endif - + return maxPos; } else @@ -3373,7 +3373,7 @@ SetScrollPage(orient, thumbVisible, FALSE); int oldRange = range - thumbVisible ; SetScrollRange(orient, oldRange, FALSE); - + SetScrollPos(orient, pos, refresh); */ #if defined(__WIN95__) @@ -3439,7 +3439,7 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRectangle *rect) rect2.right = rect->x + rect->width; rect2.bottom = rect->y + rect->height; } - + if ( rect ) ::ScrollWindow((HWND) GetHWND(), dx, dy, &rect2, NULL); else @@ -3475,7 +3475,7 @@ void wxWindow::SubclassWin(WXHWND hWnd) void wxWindow::UnsubclassWin(void) { wxRemoveHandleAssociation(this); - + // Restore old Window proc if ((HWND) GetHWND()) { @@ -3494,7 +3494,7 @@ WXDWORD wxWindow::MakeExtendedStyle(long style, bool eliminateBorders) WXDWORD exStyle = 0; if ( style & wxTRANSPARENT_WINDOW ) exStyle |= WS_EX_TRANSPARENT ; - + if ( !eliminateBorders ) { if ( style & wxSUNKEN_BORDER ) @@ -3554,7 +3554,7 @@ WXDWORD wxWindow::Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D) if ( *want3D ) nativeBorder = FALSE; #endif - + DWORD exStyle = MakeExtendedStyle(m_windowStyle, !nativeBorder); // If we want 3D, but haven't specified a border here, @@ -3565,7 +3565,7 @@ WXDWORD wxWindow::Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D) (m_windowStyle & wxSTATIC_BORDER) || (m_windowStyle & wxSIMPLE_BORDER) )) exStyle |= defaultBorderStyle; // WS_EX_CLIENTEDGE ; #endif - + return exStyle; } @@ -3579,13 +3579,13 @@ void wxWindow::OnChar(wxKeyEvent& event) return; } } - + bool isVirtual; int id = wxCharCodeWXToMSW((int)event.KeyCode(), &isVirtual); - + if ( id == -1 ) id= m_lastWParam; - + if ( !event.ControlDown() ) (void) MSWDefWindowProc(m_lastMsg, (WPARAM) id, m_lastLParam); } @@ -3621,7 +3621,7 @@ bool wxWindow::TransferDataToWindow(void) wxMessageBox("Application Error", "Could not transfer data to window", wxOK|wxICON_EXCLAMATION); return FALSE; } - + node = node->Next(); } return TRUE; @@ -3639,7 +3639,7 @@ bool wxWindow::TransferDataFromWindow(void) { return FALSE; } - + node = node->Next(); } return TRUE; @@ -3655,7 +3655,7 @@ bool wxWindow::Validate(void) { return FALSE; } - + node = node->Next(); } return TRUE; @@ -4187,9 +4187,9 @@ void wxWindow::OnDefaultAction(wxControl *initiatingItem) event.m_clientData = lbox->wxListBox::GetClientData(event.m_commandInt); } event.m_eventObject = lbox; - + lbox->ProcessCommand(event); - + if (event.m_commandString) delete[] event.m_commandString; return; @@ -4229,7 +4229,7 @@ void wxWindow::Fit(void) maxX = wx + ww; if ( wy + wh > maxY ) maxY = wy + wh; - + node = node->Next(); } SetClientSize(maxX + 5, maxY + 5); @@ -4240,7 +4240,7 @@ void wxWindow::SetValidator(const wxValidator& validator) if ( m_windowValidator ) delete m_windowValidator; m_windowValidator = validator.Clone(); - + if ( m_windowValidator ) m_windowValidator->SetWindow(this) ; } @@ -4250,7 +4250,7 @@ wxWindow *wxWindow::FindWindow(long id) { if ( GetId() == id) return this; - + wxNode *node = GetChildren()->First(); while ( node ) { @@ -4267,7 +4267,7 @@ wxWindow *wxWindow::FindWindow(const wxString& name) { if ( GetName() == name) return this; - + wxNode *node = GetChildren()->First(); while ( node ) { @@ -4303,7 +4303,7 @@ int y_pages = 0; // Bugfix begin if (vert_units) y_pages = (int)(v_height/vert_units) - y_page; - + #ifdef __WXMSW__ int y = 0; #else @@ -4400,17 +4400,17 @@ void wxWindow::OnIdle(wxIdleEvent& event) { // Generate a LEAVE event m_mouseInWindow = FALSE; - + int state = 0; if (::GetKeyState(VK_SHIFT) != 0) state |= MK_SHIFT; if (::GetKeyState(VK_CONTROL) != 0) state |= MK_CONTROL; - + // Unfortunately the mouse button and keyboard state may have changed // by the time the OnIdle function is called, so 'state' may be // meaningless. - + MSWOnMouseLeave(pt.x, pt.y, state); } } @@ -4518,7 +4518,7 @@ const char *wxGetMessageName(int message) case 0x0046: return "WM_WINDOWPOSCHANGING"; case 0x0047: return "WM_WINDOWPOSCHANGED"; case 0x0048: return "WM_POWER"; - + #ifdef __WIN32__ case 0x004A: return "WM_COPYDATA"; case 0x004B: return "WM_CANCELJOURNAL"; @@ -4536,7 +4536,7 @@ const char *wxGetMessageName(int message) case 0x007F: return "WM_GETICON"; case 0x0080: return "WM_SETICON"; #endif //WIN32 - + case 0x0081: return "WM_NCCREATE"; case 0x0082: return "WM_NCDESTROY"; case 0x0083: return "WM_NCCALCSIZE"; @@ -4563,13 +4563,13 @@ const char *wxGetMessageName(int message) case 0x0106: return "WM_SYSCHAR"; case 0x0107: return "WM_SYSDEADCHAR"; case 0x0108: return "WM_KEYLAST"; - + #ifdef __WIN32__ case 0x010D: return "WM_IME_STARTCOMPOSITION"; case 0x010E: return "WM_IME_ENDCOMPOSITION"; case 0x010F: return "WM_IME_COMPOSITION"; #endif //WIN32 - + case 0x0110: return "WM_INITDIALOG"; case 0x0111: return "WM_COMMAND"; case 0x0112: return "WM_SYSCOMMAND"; @@ -4594,7 +4594,7 @@ const char *wxGetMessageName(int message) case 0x0210: return "WM_PARENTNOTIFY"; case 0x0211: return "WM_ENTERMENULOOP"; case 0x0212: return "WM_EXITMENULOOP"; - + #ifdef __WIN32__ case 0x0213: return "WM_NEXTMENU"; case 0x0214: return "WM_SIZING"; @@ -4603,7 +4603,7 @@ const char *wxGetMessageName(int message) case 0x0218: return "WM_POWERBROADCAST"; case 0x0219: return "WM_DEVICECHANGE"; #endif //WIN32 - + case 0x0220: return "WM_MDICREATE"; case 0x0221: return "WM_MDIDESTROY"; case 0x0222: return "WM_MDIACTIVATE"; @@ -4616,7 +4616,7 @@ const char *wxGetMessageName(int message) case 0x0229: return "WM_MDIGETACTIVE"; case 0x0230: return "WM_MDISETMENU"; case 0x0233: return "WM_DROPFILES"; - + #ifdef __WIN32__ case 0x0281: return "WM_IME_SETCONTEXT"; case 0x0282: return "WM_IME_NOTIFY"; @@ -4627,7 +4627,7 @@ const char *wxGetMessageName(int message) case 0x0290: return "WM_IME_KEYDOWN"; case 0x0291: return "WM_IME_KEYUP"; #endif //WIN32 - + case 0x0300: return "WM_CUT"; case 0x0301: return "WM_COPY"; case 0x0302: return "WM_PASTE"; @@ -4646,7 +4646,7 @@ const char *wxGetMessageName(int message) case 0x030F: return "WM_QUERYNEWPALETTE"; case 0x0310: return "WM_PALETTEISCHANGING"; case 0x0311: return "WM_PALETTECHANGED"; - + #ifdef __WIN32__ // common controls messages - although they're not strictly speaking // standard, it's nice to decode them nevertheless @@ -4729,7 +4729,7 @@ const char *wxGetMessageName(int message) case 0x1000 + 63: return "LVM_GETHOTCURSOR"; case 0x1000 + 64: return "LVM_APPROXIMATEVIEWRECT"; case 0x1000 + 65: return "LVM_SETWORKAREA"; - + // tree view case 0x1100 + 0: return "TVM_INSERTITEMA"; case 0x1100 + 50: return "TVM_INSERTITEMW"; @@ -4761,7 +4761,7 @@ const char *wxGetMessageName(int message) case 0x1100 + 64: return "TVM_GETISEARCHSTRINGW"; case 0x1100 + 24: return "TVM_SETTOOLTIPS"; case 0x1100 + 25: return "TVM_GETTOOLTIPS"; - + // header case 0x1200 + 0: return "HDM_GETITEMCOUNT"; case 0x1200 + 1: return "HDM_INSERTITEMA"; @@ -4781,7 +4781,7 @@ const char *wxGetMessageName(int message) case 0x1200 + 17: return "HDM_GETORDERARRAY"; case 0x1200 + 18: return "HDM_SETORDERARRAY"; case 0x1200 + 19: return "HDM_SETHOTDIVIDER"; - + // tab control case 0x1300 + 2: return "TCM_GETIMAGELIST"; case 0x1300 + 3: return "TCM_SETIMAGELIST"; @@ -4810,7 +4810,7 @@ const char *wxGetMessageName(int message) case 0x1300 + 48: return "TCM_SETCURFOCUS"; case 0x1300 + 49: return "TCM_SETMINTABWIDTH"; case 0x1300 + 50: return "TCM_DESELECTALL"; - + // toolbar case WM_USER+1: return "TB_ENABLEBUTTON"; case WM_USER+2: return "TB_CHECKBUTTON"; @@ -4868,13 +4868,13 @@ const char *wxGetMessageName(int message) case WM_USER+60: return "TB_SETMAXTEXTROWS"; case WM_USER+61: return "TB_GETTEXTROWS"; case WM_USER+41: return "TB_GETBITMAPFLAGS"; - + #endif //WIN32 - + default: static char s_szBuf[128]; sprintf(s_szBuf, "", message); return s_szBuf; } } -#endif //WXDEBUG \ No newline at end of file +#endif //WXDEBUG