#if wxUSE_MDI && !defined(__WXUNIVERSAL__)
+#include "wx/mdi.h"
+
#ifndef WX_PRECOMP
#include "wx/frame.h"
#include "wx/menu.h"
#include "wx/app.h"
#include "wx/utils.h"
#include "wx/dialog.h"
- #if wxUSE_STATUSBAR
- #include "wx/statusbr.h"
- #endif
+ #include "wx/statusbr.h"
#include "wx/settings.h"
#include "wx/intl.h"
#include "wx/log.h"
+ #include "wx/toolbar.h"
#endif
#include "wx/stockitem.h"
-#include "wx/mdi.h"
#include "wx/msw/private.h"
#if wxUSE_STATUSBAR && wxUSE_NATIVE_STATUSBAR
#include "wx/msw/statbr95.h"
#endif
-#if wxUSE_TOOLBAR
- #include "wx/toolbar.h"
-#endif // wxUSE_TOOLBAR
-
#include <string.h>
// ---------------------------------------------------------------------------
extern const wxChar *wxMDIFrameClassName; // from app.cpp
extern const wxChar *wxMDIChildFrameClassName;
extern const wxChar *wxMDIChildFrameClassNameNoRedraw;
-extern void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win);
extern void wxRemoveHandleAssociation(wxWindow *win);
-static HWND invalidHandle = 0;
-
// ---------------------------------------------------------------------------
// constants
// ---------------------------------------------------------------------------
msflags |= WS_MINIMIZEBOX;
if (style & wxMAXIMIZE_BOX)
msflags |= WS_MAXIMIZEBOX;
- if (style & wxTHICK_FRAME)
+ if (style & wxRESIZE_BORDER)
msflags |= WS_THICKFRAME;
if (style & wxSYSTEM_MENU)
msflags |= WS_SYSMENU;
m_hWnd = (WXHWND)::SendMessage(GetWinHwnd(parent->GetClientWindow()),
WM_MDICREATE, 0, (LONG)(LPSTR)&mcs);
- wxAssociateWinWithHandle((HWND) GetHWND(), this);
+ if ( !m_hWnd )
+ {
+ wxLogLastError(_T("WM_MDICREATE"));
+ return false;
+ }
+
+ SubclassWin(m_hWnd);
return true;
}
GetEventHandler()->ProcessEvent(event);
}
+// Unlike other wxTopLevelWindowBase, the mdi child's "GetPosition" is not the
+// same as its GetScreenPosition
+void wxMDIChildFrame::DoGetScreenPosition(int *x, int *y) const
+{
+ HWND hWnd = GetHwnd();
+
+ RECT rect;
+ ::GetWindowRect(hWnd, &rect);
+ if (x)
+ *x = rect.left;
+ if (y)
+ *y = rect.top;
+}
+
+
void wxMDIChildFrame::DoGetPosition(int *x, int *y) const
{
RECT rect;
void wxMDIChildFrame::MSWDestroyWindow()
{
- invalidHandle = GetHwnd();
-
wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent();
// Must make sure this handle is invalidated (set to NULL) since all sorts
if (parent->GetActiveChild() == (wxMDIChildFrame*) NULL)
ResetWindowStyle((void*) NULL);
- invalidHandle = 0;
-
if (m_hMenu)
{
::DestroyMenu((HMENU) m_hMenu);