2016-06-10 6 views
0

Я чрезвычайно новичок, и я не понимаю, что делать. Я делаю DLL на C++ для игры, над которой я работаю на другом языке. Я ничего не знаю о C++ и почти не работал над ним. Мне нужно это, чтобы вернуть цвет персонализации окон. Кто-то из reddit изящно дал мне какой-то источник, который работал, но он только вернул цвет ACTIVE_BORDER, который не тот же цвет, который пользователи могут легко изменить в Windows 8+, на что я сосредоточен. Я изменил его для работы с DwmGetColorizationColor, но теперь проблема в том, что он не использует COLORREF, который мне нужен. Любой, кто может мне помочь, будет очень благодарен.Как получить COLORREF от DwmGetColorizationColor

Heres мой источник:

#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 c = 
    ((color && 0x00ff0000) >> 16) //red 
    || 
    ((color && 0x0000ff00)) //green 
    || 
    ((color && 0x000000ff) << 16);