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 sizeOder 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.