Merge pull request #690 from FrzMtrsprt/dark_border

Enable dark window border on Windows
This commit is contained in:
Barry 2022-10-17 11:16:24 +08:00 committed by GitHub
commit c9919b3020
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 54 additions and 0 deletions

View file

@ -149,6 +149,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(QC_UTIL_SOURCES ${QC_UTIL_SOURCES}
util/mousetap/winmousetap.h
util/mousetap/winmousetap.cpp
util/winutils.h
util/winutils.cpp
)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")

View file

@ -11,6 +11,10 @@
#include "videoform.h"
#include "../groupcontroller/groupcontroller.h"
#ifdef Q_OS_WIN32
#include "../util/winutils.h"
#endif
QString s_keyMapPath = "";
const QString &getKeyMapPath()
@ -137,6 +141,10 @@ void Dialog::initUI()
setWindowTitle(Config::getInstance().getTitle());
#ifdef Q_OS_WIN32
WinUtils::setDarkBorderToWindow((HWND)this->winId(), true);
#endif
ui->bitRateEdit->setValidator(new QIntValidator(1, 99999, this));
ui->maxSizeBox->addItem("640");

View file

@ -0,0 +1,28 @@
#include <QDebug>
#include <Windows.h>
#include <dwmapi.h>
#pragma comment(lib, "dwmapi")
#include "winutils.h"
enum : WORD
{
DwmwaUseImmersiveDarkMode = 20,
DwmwaUseImmersiveDarkModeBefore20h1 = 19
};
WinUtils::WinUtils(){};
WinUtils::~WinUtils(){};
// Set dark border to window
// Reference: qt/qtbase.git/tree/src/plugins/platforms/windows/qwindowswindow.cpp
bool WinUtils::setDarkBorderToWindow(const HWND &hwnd, const bool &d)
{
const BOOL darkBorder = d ? TRUE : FALSE;
const bool ok = SUCCEEDED(DwmSetWindowAttribute(hwnd, DwmwaUseImmersiveDarkMode, &darkBorder, sizeof(darkBorder)))
|| SUCCEEDED(DwmSetWindowAttribute(hwnd, DwmwaUseImmersiveDarkModeBefore20h1, &darkBorder, sizeof(darkBorder)));
if (!ok)
qWarning("%s: Unable to set dark window border.", __FUNCTION__);
return ok;
}

16
QtScrcpy/util/winutils.h Normal file
View file

@ -0,0 +1,16 @@
#ifndef WINUTILS_H
#define WINUTILS_H
#include <QApplication>
#include <Windows.h>
class WinUtils
{
public:
WinUtils();
~WinUtils();
static bool setDarkBorderToWindow(const HWND &hwnd, const bool &d);
};
#endif // WINUTILS_H