diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-07-02 09:24:39 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-07-02 09:24:39 +0200 |
commit | 9fbab94798455c79bfadee9041a78bd47ff642e4 (patch) | |
tree | 48aeaec9ad406caab07f7f4449cf01eebb17ea9c /3rd-party/SingleApplication/Windows.md | |
parent | Add WIN32 to windows executable (diff) | |
download | smolbote-9fbab94798455c79bfadee9041a78bd47ff642e4.tar.xz |
Replace SingleApplication with itay-grudev/SingleApplication
Diffstat (limited to '3rd-party/SingleApplication/Windows.md')
-rw-r--r-- | 3rd-party/SingleApplication/Windows.md | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/3rd-party/SingleApplication/Windows.md b/3rd-party/SingleApplication/Windows.md new file mode 100644 index 0000000..48b0748 --- /dev/null +++ b/3rd-party/SingleApplication/Windows.md @@ -0,0 +1,46 @@ +Windows Specific Implementations +================================ + +Setting the foreground window +----------------------------- + +In the `instanceStarted()` example in the `README` we demonstrated how an +application can bring it's primary instance window whenever a second copy +of the application is started. + +On Windows the ability to bring the application windows to the foreground is +restricted, see [`AllowSetForegroundWindow()`][AllowSetForegroundWindow] for more +details. + +The background process (the primary instance) can bring its windows to the +foreground if it is allowed by the current foreground process (the secondary +instance). To bypass this `SingleApplication` must be initialized with the +`allowSecondary` parameter set to `true` and the `options` parameter must +include `Mode::SecondaryNotification`, See `SingleApplication::Mode` for more +details. + +Here is an example: + +```cpp +if( app.isSecondary() ) { + // This API requires LIBS += User32.lib to be added to the project + AllowSetForegroundWindow( DWORD( app.getPrimaryPid() ) ); +} + +if( app.isPrimary() ) { + QObject::connect( + &app, + &SingleApplication::instanceStarted, + this, + &App::instanceStarted + ); +} +``` + +```cpp +void App::instanceStarted() { + QApplication::setActiveWindow( [window/widget to set to the foreground] ); +} +``` + +[AllowSetForegroundWindow]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms632668.aspx |