Я очень новый и не понимаю, что делать. Я делаю 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;
};
Возвращенный цвет имеет формат
0xAArrggbb
В то время как Windows COLORREF
является
0x00bbggrr
Вам нужно перемещаться по частям вашего возвращения DWORD
чтобы в COLORREF.
COLORREF c =
((color && 0x00ff0000) >> 16) //red
||
((color && 0x0000ff00)) //green
||
((color && 0x000000ff) << 16);
Других решений пока нет …