bool HandleMDIActivate(long bActivate, WXHWND, WXHWND);
bool HandleWindowPosChanging(void *lpPos);
bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control);
+ bool HandleGetMinMaxInfo(void *mmInfo);
virtual long MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
virtual long MSWDefWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
const wxPoint& pos,
const wxSize& size,
const long style)
- : wxMDIParentFrame(parent, id, title, pos, size, style)
+ : wxMDIParentFrame(parent, id, title, pos, size,
+ style | wxNO_FULL_REPAINT_ON_RESIZE)
{
textWindow = new wxTextCtrl(this, -1, "A help window",
wxDefaultPosition, wxDefaultSize,
// Define a constructor for my canvas
MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
: wxScrolledWindow(parent, -1, pos, size,
- wxSUNKEN_BORDER|wxVSCROLL|wxHSCROLL)
+ wxSUNKEN_BORDER |
+ wxNO_FULL_REPAINT_ON_RESIZE |
+ wxVSCROLL | wxHSCROLL)
{
SetBackgroundColour(wxColour("WHITE"));
MyChild::MyChild(wxMDIParentFrame *parent, const wxString& title,
const wxPoint& pos, const wxSize& size,
const long style)
- : wxMDIChildFrame(parent, -1, title, pos, size, style)
+ : wxMDIChildFrame(parent, -1, title, pos, size,
+ style | wxNO_FULL_REPAINT_ON_RESIZE)
{
canvas = (MyCanvas *) NULL;
my_children.Append(this);
+
+ // this should work for MDI frames as well as for normal ones
+ SetSizeHints(100, 100);
}
MyChild::~MyChild()
break;
case WM_GETMINMAXINFO:
- // let the default window proc calculate the size of MDI children
- // frames because it is based on the size of the MDI client window,
- // not on the values specified in wxWindow m_min/max variables
- return MSWDefWindowProc(message, wParam, lParam);
+ processed = HandleGetMinMaxInfo((MINMAXINFO *)lParam);
+ break;
case WM_MDIACTIVATE:
{
return FALSE;
}
+bool wxMDIChildFrame::HandleGetMinMaxInfo(void *mmInfo)
+{
+ MINMAXINFO *info = (MINMAXINFO *)mmInfo;
+
+ // let the default window proc calculate the size of MDI children
+ // frames because it is based on the size of the MDI client window,
+ // not on the values specified in wxWindow m_max variables
+ bool processed = MSWDefWindowProc(WM_GETMINMAXINFO, 0, (LPARAM)mmInfo);
+
+ // but allow GetSizeHints() to set the min size
+ if ( m_minWidth != -1 )
+ {
+ info->ptMinTrackSize.x = m_minWidth;
+
+ processed = TRUE;
+ }
+
+ if ( m_minHeight != -1 )
+ {
+ info->ptMinTrackSize.y = m_minHeight;
+
+ processed = TRUE;
+ }
+
+ return TRUE;
+}
+
// ---------------------------------------------------------------------------
// MDI specific message translation/preprocessing
// ---------------------------------------------------------------------------