我是个新手,我不知道该怎么做。我正在用 C++ 为我正在用另一种语言开发的游戏制作一个 DLL。我对 C++ 一无所知,而且自己也几乎没有接触过它。我需要它来返回 Windows 个性化颜色。 reddit 上的某人优雅地给了我一些有效的源代码,但它只返回了 ACTIVE_BORDER 颜色,这与用户可以在 Windows 8+ 中轻松更改的颜色不同,这正是我所关注的。我已将其修改为与 DwmGetColorizationColor 一起使用,但现在的问题是它不使用我需要的 COLORREF。任何可以帮助我的人将不胜感激。
这是我的来源:
#include <windows.h>
#include <dwmapi.h>
#include <gdiplus.h>
#define DLLEXPORT extern "C" __declspec(dllexport)
#pragma comment(lib, "Dwmapi")
DLLEXPORT double GetCol(void) {
DWORD color = 0;
BOOL opaque = FALSE;
HRESULT hr = DwmGetColorizationColor(&color, &opaque);
return color;
};
返回的颜色格式为
0xAArrggbb
而 Windows
COLORREF
是
0x00bbggrr
您需要将退回的
DWORD
部分移动到 COLORREF 中。
COLORREF c =
((color and 0x00ff0000) shr 16) //red
or
((color and 0x0000ff00)) //green
or
((color and 0x000000ff) shl 16);