subclass all updown controls in notebooks, not just the first one

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2005-05-24 19:18:15 +00:00
parent 600ffb3230
commit dfb47d834d
2 changed files with 18 additions and 7 deletions

View File

@ -222,6 +222,16 @@ protected:
bool DoDrawBackground(WXHDC hDC, wxWindow *child = NULL);
#endif // wxUSE_UXTHEME
// these function are only used for reducing flicker on notebook resize and
// we don't need to do this for WinCE
#ifndef __WXWINCE__
void OnEraseBackground(wxEraseEvent& event);
void OnPaint(wxPaintEvent& event);
// true if we have already subclassed our updown control
bool m_hasSubclassedUpdown;
#endif // __WXWINCE__
// the current selection (-1 if none)
int m_nSelection;
@ -232,11 +242,6 @@ protected:
WXHBRUSH m_hbrBackground;
#endif // wxUSE_UXTHEME
// No need to optimize for WinCE
#ifndef __WXWINCE__
void OnEraseBackground(wxEraseEvent& event);
void OnPaint(wxPaintEvent& event);
#endif
DECLARE_DYNAMIC_CLASS_NO_COPY(wxNotebook)
DECLARE_EVENT_TABLE()

View File

@ -229,6 +229,10 @@ void wxNotebook::Init()
#if wxUSE_UXTHEME
m_hbrBackground = NULL;
#endif // wxUSE_UXTHEME
#if USE_NOTEBOOK_ANTIFLICKER
m_hasSubclassedUpdown = false;
#endif // USE_NOTEBOOK_ANTIFLICKER
}
// default for dynamic class
@ -921,7 +925,7 @@ void wxNotebook::OnSize(wxSizeEvent& event)
#if USE_NOTEBOOK_ANTIFLICKER
// subclass the spin control used by the notebook to scroll pages to
// prevent it from flickering on resize
if ( !gs_wndprocNotebookSpinBtn )
if ( !m_hasSubclassedUpdown )
{
// iterate over all child windows to find spin button
for ( HWND child = ::GetWindow(GetHwnd(), GW_CHILD);
@ -935,9 +939,11 @@ void wxNotebook::OnSize(wxSizeEvent& event)
if ( !childWindow )
{
// subclass the spin button to override WM_ERASEBKGND
gs_wndprocNotebookSpinBtn = (WXFARPROC)wxGetWindowProc(child);
if ( !gs_wndprocNotebookSpinBtn )
gs_wndprocNotebookSpinBtn = (WXFARPROC)wxGetWindowProc(child);
wxSetWindowProc(child, wxNotebookSpinBtnWndProc);
m_hasSubclassedUpdown = true;
break;
}
}