added (MSW/GTK) and documented new frame and dialog flags
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8523 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -43,14 +43,20 @@ dialog to respond to system close events.
|
|||||||
\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{The dialog stays on top of all other windows (Windows only).}
|
\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{The dialog stays on top of all other windows (Windows only).}
|
||||||
\twocolitem{\windowstyle{wxNO\_3D}}{Under Windows, specifies that the child controls
|
\twocolitem{\windowstyle{wxNO\_3D}}{Under Windows, specifies that the child controls
|
||||||
should not have 3D borders unless specified in the control.}
|
should not have 3D borders unless specified in the control.}
|
||||||
|
\twocolitem{\windowstyle{wxDIALOG\_NO\_PARENT}}{By default, the dialogs crated
|
||||||
|
with {\tt NULL} parent window will be given the
|
||||||
|
\helpref{applications top level window}{wxappgettopwindow} as parent. Use this
|
||||||
|
style to prevent this from happening and create a really orphan dialog (note
|
||||||
|
that this is not recommended for modal dialogs).}
|
||||||
\twocolitem{\windowstyle{wxDIALOG\_EX\_CONTEXTHELP}}{Under Windows, puts a query button on the
|
\twocolitem{\windowstyle{wxDIALOG\_EX\_CONTEXTHELP}}{Under Windows, puts a query button on the
|
||||||
caption. When pressed, Windows will go into a context-sensitive help mode and wxWindows will send
|
caption. When pressed, Windows will go into a context-sensitive help mode and wxWindows will send
|
||||||
a wxEVT\_HELP event if the user clicked on an application window. {\it Note} that this is an extended
|
a wxEVT\_HELP event if the user clicked on an application window. {\it Note} that this is an extended
|
||||||
style and must be set by calling \helpref{SetExtraStyle}{wxwindowsetextrastyle} before Create is called (two-step construction).}
|
style and must be set by calling \helpref{SetExtraStyle}{wxwindowsetextrastyle} before Create is called (two-step construction).}
|
||||||
\end{twocollist}
|
\end{twocollist}
|
||||||
|
|
||||||
Under Unix or Linux, MWM (the Motif Window Manager) or other window managers reckognizing
|
Under Unix or Linux, MWM (the Motif Window Manager) or other window managers
|
||||||
the MHM hints should be running for any of these styles to have an effect.
|
reckognizing the MHM hints should be running for any of these styles to have an
|
||||||
|
effect.
|
||||||
|
|
||||||
See also \helpref{Generic window styles}{windowstyles}.
|
See also \helpref{Generic window styles}{windowstyles}.
|
||||||
|
|
||||||
|
@@ -34,12 +34,15 @@ application windows.
|
|||||||
\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows. Windows only.}
|
\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows. Windows only.}
|
||||||
\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu.}
|
\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu.}
|
||||||
\twocolitem{\windowstyle{wxSIMPLE\_BORDER}}{Displays no border or decorations. GTK and Windows only.}
|
\twocolitem{\windowstyle{wxSIMPLE\_BORDER}}{Displays no border or decorations. GTK and Windows only.}
|
||||||
\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window (Unix only).}
|
\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window.}
|
||||||
\twocolitem{\windowstyle{wxFRAME\_FLOAT\_ON\_PARENT}}{Causes the frame to be above the parent window in the
|
\twocolitem{\windowstyle{wxFRAME\_TOOL\_WINDOW}}{Causes a frame with a small
|
||||||
z-order and not shown in the taskbar. Without this style, frames are created as top-level windows that may be obscured by
|
titlebar to be created; the frame does not appear in the taskbar under Windows.}
|
||||||
the parent window, and frame titles are shown in the taskbar. Windows and GTK.}
|
\twocolitem{\windowstyle{wxFRAME\_NO\_TASKBAR}}{Creates a normal frame but if
|
||||||
\twocolitem{\windowstyle{wxFRAME\_TOOL\_WINDOW}}{Causes a frame with a small titlebar to be created;
|
this frame has a parent it does not appear in the taskbar under Windows. Note
|
||||||
the frame title does not appear in the taskbar. Windows only.}
|
that a frame without parent will still appear in the taskbar even with this
|
||||||
|
style. Has no effect under other platforms.}
|
||||||
|
\twocolitem{\windowstyle{wxFRAME\_FLOAT\_ON\_PARENT}}{Unused any longer, use
|
||||||
|
wxFRAME\_TOOL\_WINDOW or wxFRAME\_NO\_TASKBAR instead}
|
||||||
\twocolitem{\windowstyle{wxFRAME\_EX\_CONTEXTHELP}}{Under Windows, puts a query button on the
|
\twocolitem{\windowstyle{wxFRAME\_EX\_CONTEXTHELP}}{Under Windows, puts a query button on the
|
||||||
caption. When pressed, Windows will go into a context-sensitive help mode and wxWindows will send
|
caption. When pressed, Windows will go into a context-sensitive help mode and wxWindows will send
|
||||||
a wxEVT\_HELP event if the user clicked on an application window. {\it Note} that this is an extended
|
a wxEVT\_HELP event if the user clicked on an application window. {\it Note} that this is an extended
|
||||||
|
@@ -912,10 +912,15 @@ enum wxStretch
|
|||||||
#define wxTINY_CAPTION_VERT 0x0080
|
#define wxTINY_CAPTION_VERT 0x0080
|
||||||
#define wxRESIZE_BORDER 0x0040
|
#define wxRESIZE_BORDER 0x0040
|
||||||
|
|
||||||
|
#define wxDIALOG_NO_PARENT 0x0001 // Don't make owned by apps top window
|
||||||
|
#define wxFRAME_NO_TASKBAR 0x0002 // No taskbar button (MSW only)
|
||||||
|
#define wxFRAME_TOOL_WINDOW 0x0004 // No taskbar button, no system menu
|
||||||
|
|
||||||
// deprecated versions defined for compatibility reasons
|
// deprecated versions defined for compatibility reasons
|
||||||
#define wxRESIZE_BOX wxMAXIMIZE_BOX
|
#define wxRESIZE_BOX wxMAXIMIZE_BOX
|
||||||
#define wxTHICK_FRAME wxRESIZE_BORDER
|
#define wxTHICK_FRAME wxRESIZE_BORDER
|
||||||
|
|
||||||
|
// obsolete styles, unused any more
|
||||||
#define wxDIALOG_MODAL 0x0020
|
#define wxDIALOG_MODAL 0x0020
|
||||||
#define wxDIALOG_MODELESS 0x0000
|
#define wxDIALOG_MODELESS 0x0000
|
||||||
|
|
||||||
@@ -1156,12 +1161,6 @@ enum wxStretch
|
|||||||
#define wxSP_FULLSASH 0x0400
|
#define wxSP_FULLSASH 0x0400
|
||||||
#define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH)
|
#define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH)
|
||||||
|
|
||||||
/*
|
|
||||||
* wxFrame extra flags
|
|
||||||
*/
|
|
||||||
// No title on taskbar
|
|
||||||
#define wxFRAME_TOOL_WINDOW 0x0004
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* wxTabCtrl flags
|
* wxTabCtrl flags
|
||||||
*/
|
*/
|
||||||
|
@@ -632,7 +632,9 @@ int wxDialog::ShowModal()
|
|||||||
return GetReturnCode();
|
return GetReturnCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !GetParent() )
|
// use the apps top level window as parent if none given unless explicitly
|
||||||
|
// forbidden
|
||||||
|
if ( !GetParent() && !(GetWindowStyleFlag() & wxDIALOG_NO_PARENT) )
|
||||||
{
|
{
|
||||||
wxWindow *parent = wxTheApp->GetTopWindow();
|
wxWindow *parent = wxTheApp->GetTopWindow();
|
||||||
if ( parent && parent != this )
|
if ( parent && parent != this )
|
||||||
|
@@ -632,7 +632,9 @@ int wxDialog::ShowModal()
|
|||||||
return GetReturnCode();
|
return GetReturnCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !GetParent() )
|
// use the apps top level window as parent if none given unless explicitly
|
||||||
|
// forbidden
|
||||||
|
if ( !GetParent() && !(GetWindowStyleFlag() & wxDIALOG_NO_PARENT) )
|
||||||
{
|
{
|
||||||
wxWindow *parent = wxTheApp->GetTopWindow();
|
wxWindow *parent = wxTheApp->GetTopWindow();
|
||||||
if ( parent && parent != this )
|
if ( parent && parent != this )
|
||||||
|
@@ -107,7 +107,8 @@ void wxDialog::Init()
|
|||||||
SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
|
SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxDialog::Create(wxWindow *parent, wxWindowID id,
|
bool wxDialog::Create(wxWindow *parent,
|
||||||
|
wxWindowID id,
|
||||||
const wxString& title,
|
const wxString& title,
|
||||||
const wxPoint& pos,
|
const wxPoint& pos,
|
||||||
const wxSize& size,
|
const wxSize& size,
|
||||||
@@ -122,9 +123,8 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id,
|
|||||||
|
|
||||||
wxTopLevelWindows.Append(this);
|
wxTopLevelWindows.Append(this);
|
||||||
|
|
||||||
// windowFont = wxTheFontList->FindOrCreateFont(11, wxSWISS, wxNORMAL, wxNORMAL);
|
if ( parent )
|
||||||
|
parent->AddChild(this);
|
||||||
if (parent) parent->AddChild(this);
|
|
||||||
|
|
||||||
if ( id == -1 )
|
if ( id == -1 )
|
||||||
m_windowId = (int)NewControlId();
|
m_windowId = (int)NewControlId();
|
||||||
@@ -159,6 +159,7 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id,
|
|||||||
if (m_exStyle & wxDIALOG_EX_CONTEXTHELP)
|
if (m_exStyle & wxDIALOG_EX_CONTEXTHELP)
|
||||||
extendedStyle |= WS_EX_CONTEXTHELP;
|
extendedStyle |= WS_EX_CONTEXTHELP;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Allows creation of dialogs with & without captions under MSWindows,
|
// Allows creation of dialogs with & without captions under MSWindows,
|
||||||
// resizeable or not (but a resizeable dialog always has caption -
|
// resizeable or not (but a resizeable dialog always has caption -
|
||||||
// otherwise it would look too strange)
|
// otherwise it would look too strange)
|
||||||
|
@@ -666,12 +666,12 @@ bool wxFrame::MSWCreate(int id, wxWindow *parent, const wxChar *wclass, wxWindow
|
|||||||
WXDWORD extendedStyle = MakeExtendedStyle(style);
|
WXDWORD extendedStyle = MakeExtendedStyle(style);
|
||||||
|
|
||||||
// make all frames appear in the win9x shell taskbar unless
|
// make all frames appear in the win9x shell taskbar unless
|
||||||
// wxFRAME_TOOL_WINDOW is explicitly given - without giving them
|
// wxFRAME_TOOL_WINDOW or wxFRAME_NO_TASKBAR is given - without giving them
|
||||||
// WS_EX_APPWINDOW style, the child (i.e. owned) frames wouldn't appear in it
|
// WS_EX_APPWINDOW style, the child (i.e. owned) frames wouldn't appear in it
|
||||||
#if !defined(__WIN16__) && !defined(__SC__)
|
#if !defined(__WIN16__) && !defined(__SC__)
|
||||||
if (style & wxFRAME_TOOL_WINDOW)
|
if ( style & wxFRAME_TOOL_WINDOW )
|
||||||
extendedStyle |= WS_EX_TOOLWINDOW;
|
extendedStyle |= WS_EX_TOOLWINDOW;
|
||||||
else
|
else if ( !(style & wxFRAME_NO_TASKBAR) )
|
||||||
extendedStyle |= WS_EX_APPWINDOW;
|
extendedStyle |= WS_EX_APPWINDOW;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -2366,14 +2366,22 @@ bool wxWindow::MSWCreate(int id,
|
|||||||
}
|
}
|
||||||
#endif // 0
|
#endif // 0
|
||||||
|
|
||||||
HWND hParent = (HWND)NULL;
|
HWND hParent = parent ? GetHwndOf(parent) : NULL;
|
||||||
if ( parent )
|
|
||||||
hParent = (HWND) parent->GetHWND();
|
|
||||||
|
|
||||||
wxWndHook = this;
|
wxWndHook = this;
|
||||||
|
|
||||||
if ( dialog_template )
|
if ( dialog_template )
|
||||||
{
|
{
|
||||||
|
// for the dialogs without wxDIALOG_NO_PARENT style, use the top level
|
||||||
|
// app window as parent - this avoids creating modal dialogs without
|
||||||
|
// parent
|
||||||
|
if ( !hParent && !(GetWindowStyleFlag() & wxDIALOG_NO_PARENT) )
|
||||||
|
{
|
||||||
|
wxWindow *winTop = wxTheApp->GetTopWindow();
|
||||||
|
if ( winTop )
|
||||||
|
hParent = GetHwndOf(winTop);
|
||||||
|
}
|
||||||
|
|
||||||
m_hWnd = (WXHWND)::CreateDialog(wxGetInstance(),
|
m_hWnd = (WXHWND)::CreateDialog(wxGetInstance(),
|
||||||
dialog_template,
|
dialog_template,
|
||||||
hParent,
|
hParent,
|
||||||
@@ -2381,27 +2389,37 @@ bool wxWindow::MSWCreate(int id,
|
|||||||
|
|
||||||
if ( m_hWnd == 0 )
|
if ( m_hWnd == 0 )
|
||||||
{
|
{
|
||||||
wxLogError(_("Can't find dummy dialog template!\nCheck resource include path for finding wx.rc."));
|
wxLogError(_("Can't find dialog template '%s'!\nCheck resource include path for finding wx.rc."),
|
||||||
|
dialog_template);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (extendedStyle != 0)
|
|
||||||
|
if ( extendedStyle != 0 )
|
||||||
{
|
{
|
||||||
::SetWindowLong(GetHwnd(), GWL_EXSTYLE, extendedStyle);
|
::SetWindowLong(GetHwnd(), GWL_EXSTYLE, extendedStyle);
|
||||||
::SetWindowPos(GetHwnd(), NULL, 0, 0, 0, 0,
|
::SetWindowPos(GetHwnd(), NULL, 0, 0, 0, 0,
|
||||||
SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
|
SWP_NOSIZE |
|
||||||
|
SWP_NOMOVE |
|
||||||
|
SWP_NOZORDER |
|
||||||
|
SWP_NOACTIVATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__WIN95__)
|
#if defined(__WIN95__)
|
||||||
// For some reason, the system menu is activated when we use the
|
// For some reason, the system menu is activated when we use the
|
||||||
// WS_EX_CONTEXTHELP style, so let's set a reasonable icon
|
// WS_EX_CONTEXTHELP style, so let's set a reasonable icon
|
||||||
if (extendedStyle & WS_EX_CONTEXTHELP)
|
if (extendedStyle & WS_EX_CONTEXTHELP)
|
||||||
{
|
{
|
||||||
if (wxTheApp->GetTopWindow() && (wxTheApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame))))
|
wxFrame *winTop = wxDynamicCast(wxTheApp->GetTopWindow(), wxFrame);
|
||||||
|
if ( winTop )
|
||||||
{
|
{
|
||||||
wxIcon icon = ((wxFrame*)wxTheApp->GetTopWindow())->GetIcon();
|
wxIcon icon = winTop->GetIcon();
|
||||||
if (icon.Ok())
|
if ( icon.Ok() )
|
||||||
SendMessage(GetHwnd(), WM_SETICON,
|
{
|
||||||
(WPARAM)TRUE, (LPARAM)(HICON) icon.GetHICON());
|
::SendMessage(GetHwnd(), WM_SETICON,
|
||||||
|
(WPARAM)TRUE,
|
||||||
|
(LPARAM)GetHiconOf(icon));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // __WIN95__
|
#endif // __WIN95__
|
||||||
@@ -2426,7 +2444,7 @@ bool wxWindow::MSWCreate(int id,
|
|||||||
wxLogLastError(wxT("MoveWindow"));
|
wxLogLastError(wxT("MoveWindow"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else // creating a normal window, not a dialog
|
||||||
{
|
{
|
||||||
int controlId = 0;
|
int controlId = 0;
|
||||||
if ( style & WS_CHILD )
|
if ( style & WS_CHILD )
|
||||||
@@ -2462,6 +2480,7 @@ bool wxWindow::MSWCreate(int id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
wxWndHook = NULL;
|
wxWndHook = NULL;
|
||||||
|
|
||||||
#ifdef __WXDEBUG__
|
#ifdef __WXDEBUG__
|
||||||
wxNode* node = wxWinHandleList->Member(this);
|
wxNode* node = wxWinHandleList->Member(this);
|
||||||
if (node)
|
if (node)
|
||||||
@@ -2472,7 +2491,8 @@ bool wxWindow::MSWCreate(int id,
|
|||||||
wxLogError(wxT("A second HWND association is being added for the same window!"));
|
wxLogError(wxT("A second HWND association is being added for the same window!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif // Debug
|
||||||
|
|
||||||
wxAssociateWinWithHandle((HWND) m_hWnd, this);
|
wxAssociateWinWithHandle((HWND) m_hWnd, this);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
Reference in New Issue
Block a user