// wxSubwindows contains all HWNDs making part of a single wx control
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxSubwindows
+class WXDLLIMPEXP_CORE wxSubwindows
{
public:
// the number of subwindows can be specified either as parameter to ctor or
{
for ( size_t n = 0; n < m_count; n++ )
{
- ::DestroyWindow(m_hwnds[n]);
+ if ( m_hwnds[n] )
+ ::DestroyWindow(m_hwnds[n]);
}
free(m_hwnds);
HWND operator[](size_t n) const
{
- return wx_const_cast(wxSubwindows *, this)->Get(n);
+ return const_cast<wxSubwindows *>(this)->Get(n);
}
// initialize the given window: id will be stored in wxWindowIDRef ensuring
int sw = show ? SW_SHOW : SW_HIDE;
for ( size_t n = 0; n < m_count; n++ )
{
- ::ShowWindow(m_hwnds[n], sw);
+ if ( m_hwnds[n] )
+ ::ShowWindow(m_hwnds[n], sw);
}
}
{
for ( size_t n = 0; n < m_count; n++ )
{
- ::EnableWindow(m_hwnds[n], enable);
+ if ( m_hwnds[n] )
+ ::EnableWindow(m_hwnds[n], enable);
}
}
for ( size_t n = 0; n < m_count; n++ )
{
- ::SendMessage(m_hwnds[n], WM_SETFONT, (WPARAM)hfont, 0);
+ if ( m_hwnds[n] )
+ {
+ ::SendMessage(m_hwnds[n], WM_SETFONT, (WPARAM)hfont, 0);
- // otherwise the window might not be redrawn correctly
- ::InvalidateRect(m_hwnds[n], NULL, FALSE /* don't erase bg */);
+ // otherwise the window might not be redrawn correctly
+ ::InvalidateRect(m_hwnds[n], NULL, FALSE /* don't erase bg */);
+ }
}
}
wxRect r;
for ( size_t n = 0; n < m_count; n++ )
{
- RECT rc;
- ::GetWindowRect(m_hwnds[n], &rc);
+ if ( m_hwnds[n] )
+ {
+ RECT rc;
- r.Union(wxRectFromRECT(rc));
+ ::GetWindowRect(m_hwnds[n], &rc);
+
+ r.Union(wxRectFromRECT(rc));
+ }
}
return r;