VC Express mit Warnung 'declared deprecated'



  • Hallo

    ich bin vor kurzem von Visual C++ 6 auf Visual C++ 2005 Express umgestiegen.
    Nun wollte ich einen Quellcode von meinem alten Programm von VC 6 mit der Express Version Compilieren. Der Compiler macht das auch mit 3 Warnung:

    Warning	1	warning C4996: 'strcpy' was declared deprecated	h:\temp\hallo\desktop hintergrund\desktop hintergrund.cpp	38	
    Warning	2	warning C4996: 'fopen' was declared deprecated	h:\temp\hallo\desktop hintergrund\desktop hintergrund.cpp	42	
    Warning	3	warning C4996: 'strcpy' was declared deprecated	h:\temp\hallo\desktop hintergrund\desktop hintergrund.cpp	62
    

    Mit VC 6 ging alles reibungslos. Das Compilierter der Express Version erstellt auch die exe, da es nur Warnungen und keine Fehler sind, doch macht das Programm nicht was es eigendlich machen soll.

    Was kann ich machen damit das wieder läuft?

    Danke


  • Mod

    http://msdn2.microsoft.com/en-us/library/8ef0s5kh.aspx

    Oder siehe _CRT_SECURE_NO_DEPRECATE



  • Wenn Du so weiterarbeiten willst wie bisher solltest Du folgendes definieren:

    _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T
    


  • Ich ändere mittels einer API Funktion den Desktop Hintergrund:

    SystemParametersInfo(SPI_SETDESKWALLPAPER,0,BildAusgabe,SPIF_SENDCHANGE|SPIF_UPDATEINIFILE);
    

    So wies aus sieht funzt die nicht, da der Hintergrund als "nichts" (grau) eingestellt wird.
    Wie kann ich diese dennoch verwenden?



  • Rückgabewert??? Hast Du eine jpeg-Datei?



  • Hallo -CH-

    Das Problem ist, daß diese Funktionen, wie der Text schon sagt- deprecated-also veraltet sind.
    Du musst entweder anstatt strcpy strcpy_s verwenden oder irgendwo das hier einfügen:

    #pragma warning(disable:4996)
    

    Dann wird dieser Fehler ignoriert.

    Grüße Mondmann


  • Mod

    Mondmann schrieb:

    Du musst entweder anstatt strcpy strcpy_s verwenden oder irgendwo das hier einfügen:

    #pragma warning(disable:4996)
    

    Dann wird dieser Fehler ignoriert.

    Besser ist es dann schon die Erzeugung der Fehler zu vermeiden durch

    _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE
    

    Den Warning zu ignorieren halte ich nicht für korrekt.



  • Martin Richter schrieb:

    Mondmann schrieb:

    Du musst entweder anstatt strcpy strcpy_s verwenden oder irgendwo das hier einfügen:

    #pragma warning(disable:4996)
    

    Dann wird dieser Fehler ignoriert.

    Besser ist es dann schon die Erzeugung der Fehler zu vermeiden durch

    _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE
    

    Den Warning zu ignorieren halte ich nicht für korrekt.

    Hm..ich bin jetzt nicht so der Crack, aber ich denke das Ergebnis ist dasselbe....
    Ich mache es auf jeden Fall so, hab das meiste aber schon durch strcpy_s usw ersetzt...das ist am Besten oder?

    Mondmann



  • Hallo

    SystemParametersInfo(SPI_SETDESKWALLPAPER,0,BildAusgabe,SPIF_SENDCHANGE|SPIF_UPDATEINIFILE);
    

    Hast Du eine jpeg-Datei?

    Nein, ich verwende ausschließlich *.bmp Bilder da, nur diese mit SystemParametersInfo funktionieren. Wenn ich Bilder als *.jpg einstellen wollte müsste ich den entsprechen Registry eintrag änderen.
    Das Problem: mit VC 6 konnte ich das Programm compiliern und es hat gefunzt, nur nun habe ich genau den selben Quelltext mit VC Express compiliert und es tritt der besagte Fehler auf, dass es so aussieht als wäre kein bild eingestellt. Auch wenn ich die Variable BildAusgabe durch einen Pfad mit einem Bitmap Bild ersetze funktionert es wiederum nicht.

    SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"H:\\Bilder\\Hintergrund Bilder\\3d_400.bmp",SPIF_SENDCHANGE|SPIF_UPDATEINIFILE);
    

    Daher schliesse ich darauf das die API-Funktion nicht funktioniert.
    Aber wie kann ich das Problem lösen?

    Danke Christoph



  • Du hast nicht zufällig ein neues Projekt mit 2005 angelegt!? Da ist die Default einstellung UNICODE... also "..." => _T("...")
    Und den Rückgabewert von "SystemParametersInfo" hast Du uns immer noch nicht verraten!



  • Und den Rückgabewert von "SystemParametersInfo" hast Du uns immer noch nicht verraten!

    Sag ich euch nicht 😃

    ABER
    Es geht:
    Jochen du hattest recht es lag an dem falschen Projekt! Nun hab ich das richtige und es funzt perfekt.

    DANKE 😉

    Christoph


Anmelden zum Antworten