Win32 Dark Mode 开源项目教程
项目地址:https://gitcode.com/gh_mirrors/wi/win32-darkmode
项目介绍
Win32 Dark Mode 是一个开源项目,旨在帮助开发者为他们的 Win32 应用程序添加暗黑模式支持。该项目提供了一系列工具和示例代码,使开发者能够轻松地检测系统主题变化并相应地调整应用程序的 UI。
项目快速启动
环境准备
确保你已经安装了以下工具和库:
- Visual Studio 2019 或更高版本
- Windows SDK 10.0.18362.0 或更高版本
克隆项目
首先,克隆项目到本地:
git clone https://github.com/ysc3839/win32-darkmode.git
编译和运行
- 打开 Visual Studio,加载项目解决方案文件
win32-darkmode.sln
。 - 选择合适的配置(Debug 或 Release)和平台(x86 或 x64)。
- 编译项目。
- 运行生成的可执行文件。
示例代码
以下是一个简单的示例代码,展示如何检测系统主题并启用暗黑模式标题栏:
#include <Windows.h>
#include <uxtheme.h>
#include <dwmapi.h>
int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
// 初始化窗口类
WNDCLASSEXW wcex = { sizeof(WNDCLASSEXW) };
wcex.lpfnWndProc = DefWindowProcW;
wcex.hInstance = hInstance;
wcex.lpszClassName = L"DarkModeWindowClass";
RegisterClassExW(&wcex);
// 创建窗口
HWND hWnd = CreateWindowExW(0, L"DarkModeWindowClass", L"Dark Mode Example", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, nullptr, nullptr, hInstance, nullptr);
// 启用暗黑模式标题栏
BOOL useDarkMode = TRUE;
DwmSetWindowAttribute(hWnd, DWMWA_USE_IMMERSIVE_DARK_MODE, &useDarkMode, sizeof(useDarkMode));
// 显示窗口
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
// 消息循环
MSG msg;
while (GetMessage(&msg, nullptr, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
应用案例和最佳实践
应用案例
- 文本编辑器:为文本编辑器添加暗黑模式,减少长时间阅读时的眼睛疲劳。
- 媒体播放器:在夜间使用时,暗黑模式的媒体播放器可以提供更舒适的观看体验。
- 开发工具:IDE 和调试工具支持暗黑模式,提高开发效率。
最佳实践
- 动态主题切换:确保应用程序能够实时响应系统主题的变化。
- 颜色对比度:在暗黑模式下,确保文本和背景之间有足够的对比度,以保证可读性。
- 资源管理:合理管理不同主题下的资源(如图片、图标),避免内存泄漏。
典型生态项目
- Windows Community Toolkit:提供了一系列辅助工具和控件,帮助开发者更轻松地实现暗黑模式。
- MahApps.Metro:一个用于创建现代化 Windows 应用程序的 UI 库,支持暗黑模式。
- Avalonia:一个跨平台的 UI 框架,支持自定义主题,包括暗黑模式。
通过以上内容,你可以快速了解并开始使用 Win32 Dark Mode 项目,为你的 Win32 应用程序添加暗黑模式支持。