Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

1

16.05.2005, 15:09

tbColor -> DWORD

Ich habe mir nen kleinen Editor zusammengebastelt u.a. mit einem std. Dialog für Farben. Dabei ist mir aufgefallen, dass nie die Farbe rauskam ,die ich ausgewählt habe. Ich habe daher mal ein wenig nachgeschaut und bin dann darauf gestoßen, dass es sich bei den Farbangaben in DWORD um COLORREF handelt und da stand dann:

Zitat

0x00bbggrr


so die Konvertierung sieht aber so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
    inline operator DWORD () const
    {
        return ((a >= 1.0f ? 255 : a <= 0.0f ? 0 : (DWORD)(a * 255.0f)) << 24) |
               ((r >= 1.0f ? 255 : r <= 0.0f ? 0 : (DWORD)(r * 255.0f)) << 16) |
               ((g >= 1.0f ? 255 : g <= 0.0f ? 0 : (DWORD)(g * 255.0f)) << 8)  |
               (b >= 1.0f ? 255 : b <= 0.0f ? 0 : (DWORD)(b * 255.0f));
    }


Das gleiche prob nur anders rum:

C-/C++-Quelltext

1
2
inline tbColor(const DWORD c) : r(TB_COLOR_CONV * (float)(BYTE)(c >> 16)), g(TB_COLOR_CONV * (float)(BYTE)(c >> 8)), b(TB_COLOR_CONV * (float)(BYTE)(c)), a(TB_COLOR_CONV * (float)(BYTE)(c >> 24))                 {}
    

Da habe ich ein paarmal nachschauen müssen, bis ich bemerkte, dass es die falsche Reihenfolge hatte. Nachdem ich die b durch g ersetzt habe und umgekehrt, ging es aber ganz normal.
Gibt es ihrgendwelche anderen DWORD Angaben, oder war es nur ein kleiner Fehler?