#include "wx/log.h"
#endif
+#if wxUSE_MDI_ARCHITECTURE && !defined(__WXUNIVERSAL__)
+
#include "wx/mdi.h"
#include "wx/msw/private.h"
static const int IDM_WINDOWICONS = 4003;
static const int IDM_WINDOWNEXT = 4004;
static const int IDM_WINDOWTILEVERT = 4005;
+static const int IDM_WINDOWPREV = 4006;
// This range gives a maximum of 500 MDI children. Should be enough :-)
static const int wxFIRST_MDI_CHILD = 4100;
m_windowMenu->AppendSeparator();
m_windowMenu->Append(IDM_WINDOWICONS, _("&Arrange Icons"));
m_windowMenu->Append(IDM_WINDOWNEXT, _("&Next"));
+ m_windowMenu->Append(IDM_WINDOWPREV, _("&Previous"));
}
m_parentFrameActive = TRUE;
else
m_windowId = NewControlId();
- long exflags;
- long msflags = MSWGetCreateWindowFlags(&exflags);
+ WXDWORD exflags;
+ WXDWORD msflags = MSWGetCreateWindowFlags(&exflags);
if ( !wxWindow::MSWCreate(wxMDIFrameClassName,
title,
if ( m_hMenu )
{
::DestroyMenu((HMENU)m_hMenu);
- m_hMenu = NULL;
+ m_hMenu = (WXHMENU)NULL;
}
if ( m_clientWindow )
// is it one of standard MDI commands?
WXWPARAM wParam = 0;
+ WXLPARAM lParam = 0;
int msg;
switch ( id )
{
case IDM_WINDOWNEXT:
msg = WM_MDINEXT;
+ lParam = 0; // next child
+ break;
+
+ case IDM_WINDOWPREV:
+ msg = WM_MDINEXT;
+ lParam = 1; // previous child
break;
default:
if ( msg )
{
- ::SendMessage(GetWinHwnd(GetClientWindow()), msg, wParam, 0);
+ ::SendMessage(GetWinHwnd(GetClientWindow()), msg, wParam, lParam);
return TRUE;
}
{
if ( !::GetMenuString(hMenu, i, buf, WXSIZEOF(buf), MF_BYPOSITION) )
{
- wxLogLastError(wxT("GetMenuString"));
+ // Ignore successful read of menu string with length 0 which
+ // occurs, for example, for a maximized MDI childs system menu
+ if ( ::GetLastError() != 0 )
+ {
+ wxLogLastError(wxT("GetMenuString"));
+ }
continue;
}
*hwndDeact = (WXHWND)HIWORD(lParam);
#endif // Win32/Win16
}
+
+#endif
+// wxUSE_MDI_ARCHITECTURE && !defined(__WXUNIVERSAL__)
+