Skip to content

Commit 79a1841

Browse files
authored
Merge pull request #690 from FrzMtrsprt/dark_border
Enable dark window border on Windows
2 parents 8c0b3d4 + ab4fea7 commit 79a1841

File tree

4 files changed

+54
-0
lines changed

4 files changed

+54
-0
lines changed

QtScrcpy/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
149149
set(QC_UTIL_SOURCES ${QC_UTIL_SOURCES}
150150
util/mousetap/winmousetap.h
151151
util/mousetap/winmousetap.cpp
152+
util/winutils.h
153+
util/winutils.cpp
152154
)
153155
endif()
154156
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")

QtScrcpy/ui/dialog.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
#include "videoform.h"
1212
#include "../groupcontroller/groupcontroller.h"
1313

14+
#ifdef Q_OS_WIN32
15+
#include "../util/winutils.h"
16+
#endif
17+
1418
QString s_keyMapPath = "";
1519

1620
const QString &getKeyMapPath()
@@ -137,6 +141,10 @@ void Dialog::initUI()
137141

138142
setWindowTitle(Config::getInstance().getTitle());
139143

144+
#ifdef Q_OS_WIN32
145+
WinUtils::setDarkBorderToWindow((HWND)this->winId(), true);
146+
#endif
147+
140148
ui->bitRateEdit->setValidator(new QIntValidator(1, 99999, this));
141149

142150
ui->maxSizeBox->addItem("640");

QtScrcpy/util/winutils.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <QDebug>
2+
#include <Windows.h>
3+
#include <dwmapi.h>
4+
#pragma comment(lib, "dwmapi")
5+
6+
#include "winutils.h"
7+
8+
enum : WORD
9+
{
10+
DwmwaUseImmersiveDarkMode = 20,
11+
DwmwaUseImmersiveDarkModeBefore20h1 = 19
12+
};
13+
14+
WinUtils::WinUtils(){};
15+
16+
WinUtils::~WinUtils(){};
17+
18+
// Set dark border to window
19+
// Reference: qt/qtbase.git/tree/src/plugins/platforms/windows/qwindowswindow.cpp
20+
bool WinUtils::setDarkBorderToWindow(const HWND &hwnd, const bool &d)
21+
{
22+
const BOOL darkBorder = d ? TRUE : FALSE;
23+
const bool ok = SUCCEEDED(DwmSetWindowAttribute(hwnd, DwmwaUseImmersiveDarkMode, &darkBorder, sizeof(darkBorder)))
24+
|| SUCCEEDED(DwmSetWindowAttribute(hwnd, DwmwaUseImmersiveDarkModeBefore20h1, &darkBorder, sizeof(darkBorder)));
25+
if (!ok)
26+
qWarning("%s: Unable to set dark window border.", __FUNCTION__);
27+
return ok;
28+
}

QtScrcpy/util/winutils.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#ifndef WINUTILS_H
2+
#define WINUTILS_H
3+
4+
#include <QApplication>
5+
#include <Windows.h>
6+
7+
class WinUtils
8+
{
9+
public:
10+
WinUtils();
11+
~WinUtils();
12+
13+
static bool setDarkBorderToWindow(const HWND &hwnd, const bool &d);
14+
};
15+
16+
#endif // WINUTILS_H

0 commit comments

Comments
 (0)