2 Warnungen die ich nicht weg bekomme :(



  • Hi,

    ich habe in meinem Programm 2 Warnungen die ich absolut nicht wegbekomme und benötige Rat:

    Hier die Zeile:

    ::DeleteObject (reinterpret_cast<void*>(::SetClassLongPtrW(hwnd_, GCL_HBRBACKGROUND, reinterpret_cast<long>(::CreateSolidBrush(RGB(0,0,0))))));
    

    Warnings:
    main.cpp(144) : warning C4311: 'reinterpret_cast' : pointer truncation from 'HBRUSH' to 'long'
    main.cpp(144) : warning C4312: 'reinterpret_cast' : conversion from 'DWORD' to 'void *' of greater size

    Oder kennt jemand noch einen weg die Hintergrundfarbe eines Fensters nachträglich noch zu ändern? Im Petzold habe ich keine andere Lösung gefunden bis auf diese, und diese macht Warnungen - läuft aber 😞



  • Sind doch nur Warnungen - Wenn du sie nicht mehr sehen willst, musst du die Option "Nach 64-Bit Portabilitätsproblemen suchen" abschalten (http://data.mmsources.de/64b.PNG). Damit machst du aber natürlich genau das, wovor die Meldung dich warenen will - deine Programme ließen sich für 64-Bit-Systeme nicht mehr kompilieren, da Pointer und Handles 64 Bit groß sind und somit die Warnungen zuträfen.



  • masterofx32 schrieb:

    Sind doch nur Warnungen

    .. Sprach der Entwickler zum Chef bevor das Programm abstürzte. Passt aber auch in die Kategorie "Die letzten Worte von.." einem Entwickler. 😃



  • @masterofx32
    wie nur warnungen? Warnungen = Fehlerverursacher!

    Gibt es keine andere möglichkeit den Hintergrund zu ändern so das es auf 64Bit Systemen geht und keine Warnungen kommen ohne hier jetzt was rumzufabrizieren um etwas umzusellen?



  • Nimm die Zeile erstmal auseinander. Die ist zu lang.



  • Naja, das stimmt schon. Wenn du es auch auf 64Bit-Systemen lauffähig haben willst, solltest du die stattdessen die Funktion SetClassLongPtr verwenden, dann arbeitest du mit ULONG_PTR und es entfällt die Umwandlung von Integer- und Pointerdatentypen.



  • masterofx32 schrieb:

    Naja, das stimmt schon. Wenn du es auch auf 64Bit-Systemen lauffähig haben willst, solltest du die stattdessen die Funktion SetClassLongPtr verwenden, dann arbeitest du mit ULONG_PTR und es entfällt die Umwandlung von Integer- und Pointerdatentypen.

    Arbeite ich doch??? 😕



  • '#' schrieb:

    masterofx32 schrieb:

    Naja, das stimmt schon. Wenn du es auch auf 64Bit-Systemen lauffähig haben willst, solltest du die stattdessen die Funktion SetClassLongPtr verwenden, dann arbeitest du mit ULONG_PTR und es entfällt die Umwandlung von Integer- und Pointerdatentypen.

    Arbeite ich doch??? 😕

    Ach so, ich bin wohl heute blind 🙂

    Du castest aber trotzdem von einem HANDLE, das intern ein Pointer ist und somit auf 64 Bit-Systemen wächst nach long. Arbeite also überall mit ULONG_PTR.


Anmelden zum Antworten