const definition



  • Hallo Forum

    ich habe ein Problem mit der const Definition. Ich habe im Internet nach einem Code gesucht, mit dem ich Buttons einfärben kann und bin dabei über eine Klasse gestolpert, die mir eigentlich ganz gut aussah. Das Problem ist aber, dass im Header so etwas drinsteht:

    const COLORREF YELLOW = RGB(255, 255, 0);
    const COLORREF DKYELLOW = RGB(128, 128, 0);
    const COLORREF RED = RGB(255, 0, 0);
    const COLORREF DKRED = RGB(128, 0, 0);
    

    und mein Compiler (ich benutze M VS 2005) Fehldermeldungen folgender Art bringt:

    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    error C3861: 'RGB': identifier not found

    Woran liegt das? Warum erkennt mein Compiler die const Definition nicht? Oder macht man das heute gar nicht mehr so?

    Danke für eure Hilfe!



  • Hi,

    lies Dir dochmal die Fehlermeldung durch: Da steht doch gar nicht, dass es etwas mit const zu tun hätte.

    WENN, dann liegt's daran, dass COLORREF und RGB nicht definiert sind (und außerdem ist das syntaktisch zumindestens "fragwürdig")....
    Header vergessen ?

    Gruß,

    Simon2.



  • O.k., sorry, Frage falsch definiert. Ich kann mit der Deklaration so auch nichts anfangen, wie gesagt, diesen Code habe ich aus dem Internet. Und das, was da steht, steht im Header. Was für mich bedeutet, dass COLORREF wohl soetwas wie eine Typspezifikation sein soll und RGB ist wohl eine Methode, die es mal bei ANSI C oder in was auch immer dieser Code geschrieben wurde, existiert hat.



  • COLORREF ist ein Typ (afaik eun typedef für unsigned long), RGB ein Makro, das drei Werte zu einem COLORREF zusammenbaut - beides gehört in die WinAPI (funktioniert also nur auf Windows-Compilern).

    Edit: Der MSVC sollte es eigentlich kennen - vermutlich hast du nur das #include <windows.h> vergessen)



  • samo schrieb:

    ...Was für mich bedeutet, dass COLORREF wohl soetwas wie eine Typspezifikation sein soll und RGB ist wohl eine Methode, die es mal bei ANSI C oder in was auch immer dieser Code geschrieben wurde, existiert hat.

    Hi,

    OK, kann man vermuten, aber hier wird nicht COLORREF spezifiziert, sondern die Variablen YELLOW, DKYELLOW, RED und DKRED.
    Diese sollen vom Typ COLORREF sein (der dafür bekannt sein muss) und als Wert das Ergebnis der Funktion RGB() (die ebenfalls bekannt sein muss) zugewiesen bekommen sollen.

    Dass die Sachen im Header stehen, bedeutet nicht automatisch, dass sie "nichts Anderes brauchen". In diesem Fall wette ich, dass vor diesem noch andere Header inkludiert werden müssen, in denen COLORREF und RGB definiert sind.

    Gruß,

    Simon2.



  • Danke! Es lag tatsächlich an einem fehlenden Header. Wenn ich windows.h includiere, dann bekomme ich andere Fehlermeldungen, also es fehlen mir noch mehrere Header. Was mich allerdings irritiert ist die Fehlermeldung:

    fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>
    

    Dennoch scheine ich aber den Header zu brauchen, da ja die vorherigen Fehlermeldungen veschwunden sind. Was ist da falsch?



  • Wenn du mit der MFC arbeitest, wird die windows.h dort schon irgendwo eingebunden - aber offenbar ist das erst nach dem Block dort oben der Fall.

    (ich schieb dich mal rüber ins richtige Board - da finden die Experten den Thread leichter)



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hab den Fehler gefunden. Ich musste nicht den Header <windows.h> sondern <afxwin.h> einfügen. Jetzt tuts. Danke nochmals!!


Anmelden zum Antworten