if ( !controlOnly
#if wxUSE_CONTROLS
- || parent->IsKindOf(CLASSINFO(wxControl))
+ || wxDynamicCast(parent, wxControl)
#endif // wxUSE_CONTROLS
)
{
SIZE sizeRect;
TEXTMETRIC tm;
- ::GetTextExtentPoint32(hdc, string.wx_str(), string.length(), &sizeRect);
+ ::GetTextExtentPoint32(hdc, string.t_str(), string.length(), &sizeRect);
GetTextMetrics(hdc, &tm);
if ( x )
m_hWnd = (WXHWND)::CreateWindowEx
(
extendedStyle,
- className.wx_str(),
- title ? title : m_windowName.wx_str(),
+ className.t_str(),
+ title ? title : m_windowName.t_str(),
style,
x, y, w, h,
(HWND)MSWGetParent(),
(
CP_ACP,
0, // no flags
- ttip.wx_str(),
+ ttip.t_str(),
tipLength,
buf,
WXSIZEOF(buf) - 1
bool wxWindowMSW::HandleEraseBkgnd(WXHDC hdc)
{
+ if ( IsBeingDeleted() )
+ {
+ // We can get WM_ERASEBKGND after starting the destruction of our top
+ // level parent. Handling it in this case is unnecessary and can be
+ // actually harmful as e.g. wxStaticBox::GetClientSize() doesn't work
+ // without a valid TLW parent (because it uses dialog units internally
+ // which use the dialog font), so just don't do anything then.
+ return false;
+ }
+
switch ( GetBackgroundStyle() )
{
case wxBG_STYLE_ERASE:
wxMenuItem *item = (wxMenuItem*)mii.dwItemData;
const wxString label(item->GetItemLabel());
- const wxChar *p = wxStrchr(label.wx_str(), wxT('&'));
+ const wxChar *p = wxStrchr(label.t_str(), wxT('&'));
while ( p++ )
{
if ( *p == wxT('&') )
#if wxUSE_STATBOX
static void wxAdjustZOrder(wxWindow* parent)
{
- if (parent->IsKindOf(CLASSINFO(wxStaticBox)))
+ if (wxDynamicCast(parent, wxStaticBox))
{
// Set the z-order correctly
SetWindowPos((HWND) parent->GetHWND(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);