Как получить COLORREF от DwmGetColorizationColor

Я очень новый и не понимаю, что делать. Я делаю DLL на C ++ для игры, над которой я работаю на другом языке. Я ничего не знаю о 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;
};

0

Решение

Возвращенный цвет имеет формат

0xAArrggbb

В то время как Windows COLORREF является

0x00bbggrr

Вам нужно перемещаться по частям вашего возвращения DWORD чтобы в COLORREF.

COLORREF c =
((color && 0x00ff0000) >> 16) //red
||
((color && 0x0000ff00)) //green
||
((color && 0x000000ff) << 16);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]