Fix to MDI to restore 3D border; kludge to OGL Studio sample to redraw

the first client frame properly (need wxWindow::Redraw in wxWin API?)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart 2000-02-24 20:18:09 +00:00
parent 802e2f34c1
commit 18d2e17080
2 changed files with 22 additions and 1 deletions

View File

@ -996,7 +996,7 @@ bool wxMDIChildFrame::HandleMDIActivate(long WXUNUSED(activate),
}
else
{
// we have nothing to with it
// we have nothing to do with it
return FALSE;
}
@ -1076,6 +1076,10 @@ void wxMDIChildFrame::MSWDestroyWindow()
HWND oldHandle = (HWND)GetHWND();
SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIDESTROY,
(WPARAM)oldHandle, 0);
if (parent->GetActiveChild() == (wxMDIChildFrame*) NULL)
ResetWindowStyle((void*) NULL);
invalidHandle = 0;
if (m_hMenu)

View File

@ -180,6 +180,23 @@ void csFrame::OnIdle(wxIdleEvent& event)
{
wxLayoutAlgorithm layout;
layout.LayoutMDIFrame(this);
#if defined(__WXMSW__) && defined(__WIN95__)
// Need to do something else to get it to refresh properly
// when a client frame is first displayed; moving the client
// window doesn't cause the proper refresh. Just refreshing the
// client doesn't work (presumably because it's clipping the
// children).
// TODO: how to put this fix in wxWindows, and not the app.
// How about at least having a wxWindow::RedrawWindow?
wxMDIChildFrame* childFrame = GetActiveChild();
if (childFrame)
{
HWND hWnd = (HWND) childFrame->GetHWND();
::RedrawWindow(hWnd, NULL, NULL, RDW_FRAME|RDW_ALLCHILDREN|RDW_INVALIDATE );
}
#endif
}
}