diff --git a/include/wx/defs.h b/include/wx/defs.h index 1cb8ad1794..d483bf87dd 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -2845,11 +2845,18 @@ typedef wxW64 long WXLPARAM; typedef wxW64 long WXLRESULT; #endif +/* + This is defined for compatibility only, it's not really the same thing as + FARPROC. + */ #if defined(__GNUWIN32__) typedef int (*WXFARPROC)(); #else typedef int (__stdcall *WXFARPROC)(); #endif + +typedef WXLRESULT (wxSTDCALL *WXWNDPROC)(WXHWND, WXUINT, WXWPARAM, WXLPARAM); + #endif /* __WIN32__ */ diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index 40f6bcf6e6..4cb366ee3e 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -939,7 +939,7 @@ extern WXDLLIMPEXP_CORE int wxGetWindowId(WXHWND hWnd); // // wndProc parameter is unused and only kept for compatibility extern WXDLLIMPEXP_CORE -bool wxCheckWindowWndProc(WXHWND hWnd, WXFARPROC wndProc = NULL); +bool wxCheckWindowWndProc(WXHWND hWnd, WXWNDPROC wndProc = NULL); // Does this window style specify any border? inline bool wxStyleHasBorder(long style) diff --git a/include/wx/msw/spinctrl.h b/include/wx/msw/spinctrl.h index 85363bf57d..612ca4bba2 100644 --- a/include/wx/msw/spinctrl.h +++ b/include/wx/msw/spinctrl.h @@ -100,7 +100,7 @@ public: // for internal use only // get the subclassed window proc of the buddy text - WXFARPROC GetBuddyWndProc() const { return m_wndProcBuddy; } + WXWNDPROC GetBuddyWndProc() const { return m_wndProcBuddy; } // return the spinctrl object whose buddy is the given window or NULL static wxSpinCtrl *GetSpinForTextCtrl(WXHWND hwndBuddy); @@ -145,7 +145,7 @@ protected: // the data for the "buddy" text ctrl WXHWND m_hwndBuddy; - WXFARPROC m_wndProcBuddy; + WXWNDPROC m_wndProcBuddy; // Block text update event after SetValue() bool m_blockEvent; diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 8ea5f8725d..dd8741dcd7 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -206,8 +206,8 @@ public: void SubclassWin(WXHWND hWnd); void UnsubclassWin(); - WXFARPROC MSWGetOldWndProc() const { return m_oldWndProc; } - void MSWSetOldWndProc(WXFARPROC proc) { m_oldWndProc = proc; } + WXWNDPROC MSWGetOldWndProc() const { return m_oldWndProc; } + void MSWSetOldWndProc(WXWNDPROC proc) { m_oldWndProc = proc; } // return true if the window is of a standard (i.e. not wxWidgets') class // @@ -597,7 +597,7 @@ protected: WXHWND m_hWnd; // the old window proc (we subclass all windows) - WXFARPROC m_oldWndProc; + WXWNDPROC m_oldWndProc; // additional (MSW specific) flags bool m_mouseInWindow:1; diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 62fa2d61b3..21d3f7ab69 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -81,10 +81,10 @@ #if USE_NOTEBOOK_ANTIFLICKER // the pointer to standard spin button wnd proc -static WXFARPROC gs_wndprocNotebookSpinBtn = (WXFARPROC)NULL; +static WXWNDPROC gs_wndprocNotebookSpinBtn = NULL; // the pointer to standard tab control wnd proc -static WXFARPROC gs_wndprocNotebook = (WXFARPROC)NULL; +static WXWNDPROC gs_wndprocNotebook = NULL; LRESULT APIENTRY wxNotebookWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); @@ -202,8 +202,7 @@ bool wxNotebook::Create(wxWindow *parent, if ( ::GetClassInfo(NULL, WC_TABCONTROL, &wc) ) { - gs_wndprocNotebook = - reinterpret_cast(wc.lpfnWndProc); + gs_wndprocNotebook = wc.lpfnWndProc; wc.lpszClassName = wxT("_wx_SysTabCtl32"); wc.style &= ~(CS_HREDRAW | CS_VREDRAW); wc.hInstance = wxGetInstance(); @@ -996,7 +995,7 @@ void wxNotebook::OnSize(wxSizeEvent& event) { // subclass the spin button to override WM_ERASEBKGND if ( !gs_wndprocNotebookSpinBtn ) - gs_wndprocNotebookSpinBtn = (WXFARPROC)wxGetWindowProc(child); + gs_wndprocNotebookSpinBtn = wxGetWindowProc(child); wxSetWindowProc(child, wxNotebookSpinBtnWndProc); m_hasSubclassedUpdown = true; diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp index 7ed9d135ee..43a69bbc3e 100644 --- a/src/msw/radiobox.cpp +++ b/src/msw/radiobox.cpp @@ -113,7 +113,7 @@ namespace { // the pointer to standard radio button wnd proc -WXFARPROC s_wndprocRadioBtn = (WXFARPROC)NULL; +WXWNDPROC s_wndprocRadioBtn = NULL; // Hash allowing to find wxRadioBox containing the given radio button by its // HWND. This is used by (subclassed) radio button window proc to find the @@ -298,7 +298,7 @@ void wxRadioBox::SubclassRadioButton(WXHWND hWndBtn) HWND hwndBtn = (HWND)hWndBtn; if ( !s_wndprocRadioBtn ) - s_wndprocRadioBtn = (WXFARPROC)wxGetWindowProc(hwndBtn); + s_wndprocRadioBtn = wxGetWindowProc(hwndBtn); wxSetWindowProc(hwndBtn, wxRadioBtnWndProc); diff --git a/src/msw/spinctrl.cpp b/src/msw/spinctrl.cpp index adc534b01a..1e4e09cd46 100644 --- a/src/msw/spinctrl.cpp +++ b/src/msw/spinctrl.cpp @@ -329,8 +329,7 @@ bool wxSpinCtrl::Create(wxWindow *parent, // subclass the text ctrl to be able to intercept some events gs_spinForTextCtrl[GetBuddyHwnd()] = this; - m_wndProcBuddy = (WXFARPROC)wxSetWindowProc(GetBuddyHwnd(), - wxBuddyTextWndProc); + m_wndProcBuddy = wxSetWindowProc(GetBuddyHwnd(), wxBuddyTextWndProc); // associate the text window with the spin button (void)::SendMessage(GetHwnd(), UDM_SETBUDDY, (WPARAM)m_hwndBuddy, 0); diff --git a/src/msw/window.cpp b/src/msw/window.cpp index db5e757c7f..2da6726752 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -1248,7 +1248,7 @@ void wxWindowMSW::SubclassWin(WXHWND hWnd) wxAssociateWinWithHandle(hwnd, this); - m_oldWndProc = (WXFARPROC)wxGetWindowProc((HWND)hWnd); + m_oldWndProc = wxGetWindowProc((HWND)hWnd); // we don't need to subclass the window of our own class (in the Windows // sense of the word) @@ -1291,7 +1291,7 @@ void wxWindowMSW::UnsubclassWin() { if ( !wxCheckWindowWndProc((WXHWND)hwnd) ) { - wxSetWindowProc(hwnd, (WNDPROC)m_oldWndProc); + wxSetWindowProc(hwnd, m_oldWndProc); } m_oldWndProc = NULL; @@ -1322,8 +1322,7 @@ void wxWindowMSW::DissociateHandle() } -bool wxCheckWindowWndProc(WXHWND hWnd, - WXFARPROC WXUNUSED(wndProc)) +bool wxCheckWindowWndProc(WXHWND hWnd, WXWNDPROC WXUNUSED(wndProc)) { const wxString str(wxGetWindowClass(hWnd)); @@ -2408,7 +2407,7 @@ WXLRESULT wxWindowMSW::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM l { WXLRESULT rc; if ( m_oldWndProc ) - rc = ::CallWindowProc(CASTWNDPROC m_oldWndProc, GetHwnd(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); + rc = ::CallWindowProc(m_oldWndProc, GetHwnd(), nMsg, wParam, lParam); else rc = ::DefWindowProc(GetHwnd(), nMsg, wParam, lParam);