fixed the problem with iconizing the miniframes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2000-07-27 22:52:59 +00:00
parent 75cd4558aa
commit fce5b5df0c
3 changed files with 48 additions and 36 deletions

View File

@@ -1,12 +1,12 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: minifram.h // Name: wx/msw/minifram.h
// Purpose: wxMiniFrame class // Purpose: wxMiniFrame class
// Author: Julian Smart // Author: Julian Smart
// Modified by: // Modified by:
// Created: 01/02/97 // Created: 01/02/97
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Julian Smart // Copyright: (c) Julian Smart
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifndef _WX_MINIFRAM_H_ #ifndef _WX_MINIFRAM_H_
@@ -20,55 +20,51 @@
#ifdef __WIN32__ #ifdef __WIN32__
class WXDLLEXPORT wxMiniFrame: public wxFrame { class WXDLLEXPORT wxMiniFrame : public wxFrame
{
DECLARE_DYNAMIC_CLASS(wxMiniFrame)
public: public:
inline wxMiniFrame(void) {} wxMiniFrame() { }
inline wxMiniFrame(wxWindow *parent, wxMiniFrame(wxWindow *parent,
wxWindowID id, wxWindowID id,
const wxString& title, const wxString& title,
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE, long style = wxCAPTION | wxCLIP_CHILDREN | wxRESIZE_BORDER,
const wxString& name = wxFrameNameStr) const wxString& name = wxFrameNameStr)
{ {
Create(parent, id, title, pos, size, style | wxFRAME_TOOL_WINDOW | wxFRAME_FLOAT_ON_PARENT, name); Create(parent, id, title, pos, size, style | wxFRAME_TOOL_WINDOW | wxFRAME_FLOAT_ON_PARENT, name);
} }
protected: protected:
DECLARE_DYNAMIC_CLASS(wxMiniFrame)
}; };
#else #else // !Win32
class WXDLLEXPORT wxMiniFrame: public wxFrame {
DECLARE_DYNAMIC_CLASS(wxMiniFrame)
class WXDLLEXPORT wxMiniFrame : public wxFrame
{
public: public:
inline wxMiniFrame(void) {} wxMiniFrame() { }
inline wxMiniFrame(wxWindow *parent, wxMiniFrame(wxWindow *parent,
wxWindowID id, wxWindowID id,
const wxString& title, const wxString& title,
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE|wxTINY_CAPTION_HORIZ, long style = wxDEFAULT_FRAME_STYLE|wxTINY_CAPTION_HORIZ,
const wxString& name = wxFrameNameStr) const wxString& name = wxFrameNameStr)
{ {
Create(parent, id, title, pos, size, style, name); Create(parent, id, title, pos, size, style, name);
} }
~wxMiniFrame(void); virtual ~wxMiniFrame();
long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); virtual long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
protected: DECLARE_DYNAMIC_CLASS(wxMiniFrame)
}; };
#endif #endif // Win32/!Win32
#endif #endif
// _WX_MINIFRAM_H_ // _WX_MINIFRAM_H_

View File

@@ -102,7 +102,6 @@ static wxString ConstructLibraryName(const wxString& basename)
return fullname; return fullname;
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// wxLibrary (one instance per dynamic library) // wxLibrary (one instance per dynamic library)
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View File

@@ -620,10 +620,17 @@ bool wxFrame::MSWCreate(int id, wxWindow *parent, const wxChar *wclass, wxWindow
// could be the culprit. But without it, you can get a lot of flicker. // could be the culprit. But without it, you can get a lot of flicker.
DWORD msflags = 0; DWORD msflags = 0;
if ((style & wxCAPTION) == wxCAPTION) if ( style & wxCAPTION )
msflags = WS_OVERLAPPED; {
if ( style & wxFRAME_TOOL_WINDOW )
msflags |= WS_POPUPWINDOW;
else
msflags |= WS_OVERLAPPED;
}
else else
msflags = WS_POPUP; {
msflags |= WS_POPUP;
}
if (style & wxMINIMIZE_BOX) if (style & wxMINIMIZE_BOX)
msflags |= WS_MINIMIZEBOX; msflags |= WS_MINIMIZEBOX;
@@ -779,6 +786,16 @@ void wxFrame::IconizeChildFrames(bool bIconize)
{ {
wxWindow *win = node->GetData(); wxWindow *win = node->GetData();
// iconizing the frames with this style under Win95 shell puts them at
// the bottom of the screen (as the MDI children) instead of making
// them appear in the taskbar because they are, by virtue of this
// style, not managed by the taskbar - instead leave Windows take care
// of them
#ifdef __WIN95__
if ( win->GetWindowStyle() & wxFRAME_TOOL_WINDOW )
continue;
#endif // Win95
// the child MDI frames are a special case and should not be touched by // the child MDI frames are a special case and should not be touched by
// the parent frame - instead, they are managed by the user // the parent frame - instead, they are managed by the user
wxFrame *frame = wxDynamicCast(win, wxFrame); wxFrame *frame = wxDynamicCast(win, wxFrame);