Aus einem HWND die HINST bekommen?



  • kann ich die warnung denn nicht irgendwie unterdrücken?



  • ich weiß nicht ob das geht, aber wenn dann irgendwie über "proprietäre Compileranweisungen" wie #pragma, oder in den compilereinstellungen...
    Aber dann werden AFAIK alle Nachrichten unterdrückt...

    Mfg Ominion



  • fghg schrieb:

    kann ich die warnung denn nicht irgendwie unterdrücken?

    Jochen Kalmbach schrieb:

    Du solltest anstelle "GetWindowLong" die neue Funktion GetWindowLongPtr verwenden.

    #pragma warning(disable:4244)
    

  • Mod

    Nicht die Option /Wp64 im Projket setzen ist sicherlich besser als ein pragma sie zu unterdrücken.

    Project Settings -> C/C++ -> General -> Detect 64bit portability issues

    EDIT_ Bleibt die Frage warum Du Dir es überhaupt holst und nicht selbst aus der WinMain bestimmst. Der dynamische Weg ist überflüssig und die hInstance meistens sowieso etwas was man immer wieder braucht.



  • Martin Richter schrieb:

    Nicht die Option /Wp64 im Projket setzen ist sicherlich besser als ein pragma sie zu unterdrücken.

    Project Settings -> C/C++ -> General -> Detect 64bit portability issues

    👎
    warum? weil ms nicht fähig ist eine GetWindowLongPtr zu liefern, die mit den standardeinstellungen keine warnung verursacht?

    #pragma warning(push)
    #pragma warning(disable:4244)
    GetWindowLongPtr(...)
    #pragma warning(pop)
    


  • !d'accord schrieb:

    warum? weil ms nicht fähig ist eine GetWindowLongPtr zu liefern, die mit den standardeinstellungen keine warnung verursacht?

    Keine Warnung:

    LONG_PTR nTmp	= GetWindowLongPtr(hWnd,GWL_HINSTANCE);
    HINSTANCE hInst	= *((HINSTANCE*)&nTmp);
    


  • SilentRob schrieb:

    Keine Warnung:

    LONG_PTR nTmp	= GetWindowLongPtr(hWnd,GWL_HINSTANCE);
    HINSTANCE hInst	= *((HINSTANCE*)&nTmp);
    

    ok, habs mit SetWindowLongPtr verwechselt. so ists ja noch viel besser, dann muss man ja gar nix ändern.



  • ja, leider war MS nicht fähig dazu... (bei SetWindowLongPtr)
    nicht mal in VS2005 ist es behoben... auch nicht im PSDKv6 (Vista, was neueres hab ich nicht drauf).
    In VS2008B2 ist der gleiche Fehler immer noch drin....
    Interessant ist aber, dass per default jetzt "/Wp64" deaktiviert ist, und wenn man es aktiviert kommt die Meldung:

    cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a future release



  • Jochen Kalmbach schrieb:

    Interessant ist aber, dass per default jetzt "/Wp64" deaktiviert ist, und wenn man es aktiviert kommt die Meldung:

    cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a future release

    Hmm eine Idee warum diese Option wieder raus genommen wird? Es wird doch wohl noch einen 32Bit Compiler geben ?! :p



  • yogle schrieb:

    Hmm eine Idee warum diese Option wieder raus genommen wird? Es wird doch wohl noch einen 32Bit Compiler geben ?! :p

    Siehe:
    http://blogs.msdn.com/vcblog/archive/2007/08/10/the-future-of-the-c-language.aspx#4421146


Anmelden zum Antworten