added wxTopLevelWindow::RequestUserAttention(); documented it and implemented it for MSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29044 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -224,6 +224,7 @@ All (GUI):
|
|||||||
- added status bar fields styles support (Tim Kosse)
|
- added status bar fields styles support (Tim Kosse)
|
||||||
- added samples/splash
|
- added samples/splash
|
||||||
- added support for stock buttons
|
- added support for stock buttons
|
||||||
|
- added wxTopLevelWindow::RequestUserAttention()
|
||||||
|
|
||||||
Unix:
|
Unix:
|
||||||
|
|
||||||
|
@@ -116,6 +116,24 @@ This function only works under Windows.
|
|||||||
\helpref{wxTopLevelWindow::Iconize}{wxtoplevelwindowiconize}
|
\helpref{wxTopLevelWindow::Iconize}{wxtoplevelwindowiconize}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxTopLevelWindow::RequestUserAttention}\label{wxtoplevelwindowrequestuserattention}
|
||||||
|
|
||||||
|
\func{void}{RequestUserAttention}{\param{int }{flags = wxUSER\_ATTENTION\_INFO}}
|
||||||
|
|
||||||
|
Use a system-dependent way to attract users attention to the window when it is
|
||||||
|
in background.
|
||||||
|
|
||||||
|
\arg{flags} may have the value of either \texttt{wxUSER\_ATTENTION\_INFO}
|
||||||
|
(default) or \texttt{wxUSER\_ATTENTION\_ERROR} which results in a more drastic
|
||||||
|
action. When in doubt, use the default value.
|
||||||
|
|
||||||
|
Note that this function should normally be only used when the application is
|
||||||
|
not already in foreground.
|
||||||
|
|
||||||
|
This function is currently only implemented for Win32 where it flashes the
|
||||||
|
window icon in the taskbar.
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxTopLevelWindow::SetIcon}\label{wxtoplevelwindowseticon}
|
\membersection{wxTopLevelWindow::SetIcon}\label{wxtoplevelwindowseticon}
|
||||||
|
|
||||||
\func{void}{SetIcon}{\param{const wxIcon\& }{icon}}
|
\func{void}{SetIcon}{\param{const wxIcon\& }{icon}}
|
||||||
|
@@ -61,6 +61,7 @@ public:
|
|||||||
#ifndef __WXWINCE__
|
#ifndef __WXWINCE__
|
||||||
virtual bool SetShape(const wxRegion& region);
|
virtual bool SetShape(const wxRegion& region);
|
||||||
#endif // __WXWINCE__
|
#endif // __WXWINCE__
|
||||||
|
virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO);
|
||||||
|
|
||||||
virtual bool Show(bool show = true);
|
virtual bool Show(bool show = true);
|
||||||
|
|
||||||
|
@@ -104,6 +104,13 @@ enum
|
|||||||
wxFULLSCREEN_NOCAPTION
|
wxFULLSCREEN_NOCAPTION
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Styles for RequestUserAttention
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
wxUSER_ATTENTION_INFO = 1,
|
||||||
|
wxUSER_ATTENTION_ERROR = 2
|
||||||
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxTopLevelWindow: a top level (as opposed to child) window
|
// wxTopLevelWindow: a top level (as opposed to child) window
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -164,6 +171,11 @@ public:
|
|||||||
// operation is successful.)
|
// operation is successful.)
|
||||||
virtual bool SetShape(const wxRegion& WXUNUSED(region)) { return FALSE; }
|
virtual bool SetShape(const wxRegion& WXUNUSED(region)) { return FALSE; }
|
||||||
|
|
||||||
|
// Attracts the users attention to this window if the application is
|
||||||
|
// inactive (should be called when a background event occurs)
|
||||||
|
virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO);
|
||||||
|
|
||||||
|
|
||||||
// implementation only from now on
|
// implementation only from now on
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
|
|
||||||
|
@@ -40,6 +40,7 @@
|
|||||||
#endif //WX_PRECOMP
|
#endif //WX_PRECOMP
|
||||||
|
|
||||||
#include "wx/module.h"
|
#include "wx/module.h"
|
||||||
|
#include "wx/dynlib.h"
|
||||||
|
|
||||||
#include "wx/msw/private.h"
|
#include "wx/msw/private.h"
|
||||||
#if defined(__WXWINCE__) && !defined(__HANDHELDPC__)
|
#if defined(__WXWINCE__) && !defined(__HANDHELDPC__)
|
||||||
@@ -901,6 +902,50 @@ bool wxTopLevelWindowMSW::SetShape(const wxRegion& region)
|
|||||||
|
|
||||||
#endif // !__WXWINCE__
|
#endif // !__WXWINCE__
|
||||||
|
|
||||||
|
void wxTopLevelWindowMSW::RequestUserAttention(int flags)
|
||||||
|
{
|
||||||
|
// check if we can use FlashWindowEx()
|
||||||
|
#ifdef FLASHW_STOP
|
||||||
|
// available in the headers, check if it is supported by the system
|
||||||
|
typedef BOOL (WINAPI *FlashWindowEx_t)(FLASHWINFO *pfwi);
|
||||||
|
FlashWindowEx_t s_pfnFlashWindowEx = NULL;
|
||||||
|
if ( !s_pfnFlashWindowEx )
|
||||||
|
{
|
||||||
|
wxDynamicLibrary dllUser32(_T("user32.dll"));
|
||||||
|
s_pfnFlashWindowEx = (FlashWindowEx_t)
|
||||||
|
dllUser32.GetSymbol(_T("FlashWindowEx"));
|
||||||
|
|
||||||
|
// we can safely unload user32.dll here, it's goign to remain loaded as
|
||||||
|
// long as the program is running anyhow
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( s_pfnFlashWindowEx )
|
||||||
|
{
|
||||||
|
WinStruct<FLASHWINFO> fwi;
|
||||||
|
fwi.hwnd = GetHwnd();
|
||||||
|
fwi.dwFlags = FLASHW_ALL;
|
||||||
|
if ( flags & wxUSER_ATTENTION_INFO )
|
||||||
|
{
|
||||||
|
// just flash a few times
|
||||||
|
fwi.uCount = 3;
|
||||||
|
}
|
||||||
|
else // wxUSER_ATTENTION_ERROR
|
||||||
|
{
|
||||||
|
// flash until the user notices it
|
||||||
|
fwi.dwFlags |= FLASHW_TIMERNOFG;
|
||||||
|
}
|
||||||
|
|
||||||
|
s_pfnFlashWindowEx(&fwi);
|
||||||
|
}
|
||||||
|
else // FlashWindowEx() not available
|
||||||
|
#endif // FLASHW_STOP
|
||||||
|
{
|
||||||
|
wxUnusedVar(flags);
|
||||||
|
|
||||||
|
::FlashWindow(GetHwnd(), TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxTopLevelWindow event handling
|
// wxTopLevelWindow event handling
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user