applied patch #428104 (SetSizeHints() for wxMDIChildFrame)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2001-06-16 01:36:35 +00:00
parent 6138e469c9
commit 3ebcfb769f
3 changed files with 40 additions and 7 deletions

View File

@ -159,6 +159,7 @@ public:
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);

View File

@ -163,7 +163,8 @@ MyFrame::MyFrame(wxWindow *parent,
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,
@ -345,7 +346,9 @@ void MyFrame::InitToolBar(wxToolBar* toolBar)
// 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"));
@ -408,10 +411,14 @@ void MyCanvas::OnEvent(wxMouseEvent& event)
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()

View File

@ -873,10 +873,8 @@ long wxMDIChildFrame::MSWWindowProc(WXUINT message,
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:
{
@ -1040,6 +1038,33 @@ bool wxMDIChildFrame::HandleWindowPosChanging(void *pos)
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
// ---------------------------------------------------------------------------