2016-06-10 3 views
0

Je suis extrêmement nouveau et je ne comprends pas quoi faire. Je fais une DLL en C++ pour un jeu sur lequel je travaille dans une autre langue. Je ne connais rien au C++ et je travaille à peine à le faire. J'en ai besoin pour retourner la couleur de personnalisation des fenêtres. Quelqu'un sur reddit m'a gracieusement donné une source qui a fonctionné mais elle n'a retourné que la couleur ACTIVE_BORDER qui n'est pas la même couleur que les utilisateurs peuvent facilement changer dans Windows 8+, ce sur quoi je me concentre. Je l'ai modifié pour fonctionner avec DwmGetColorizationColor mais maintenant le problème est qu'il n'utilise pas un COLORREF qui est ce dont j'ai besoin. Toute personne qui peut m'aider serait grandement appréciée.Comment obtenir COLORREF de DwmGetColorizationColor

Heres ma source:

#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; 
}; 

Répondre

0

La couleur retournée est dans le format de

0xAArrggbb 

Alors que Windows COLORREF est

0x00bbggrr 

Vous devez déplacer autour des parties de Vous avez renvoyé DWORD dans un COLORREF.

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