Ab wann laufen VC++6.0 Programme?



  • Hallo

    Ich habe ein MFC-Programm mit dem VC++6.0 geschrieben.
    Nachdem ich eine Funktion die es erst ab Win98 gibt dynamisch lade, wenn es diese gibt, startet das Programm unter Window95a immer noch nicht, Fehler: Exportfehler in mfc42.dll:65xx

    Weiß wer ab wann mfc42.dll(Version für 6.0) in welchem Windows drin war?
    Wie sieht es rechtlich aus wenn ich einfach die notwendigen Dateien(mfc42.dll,msvcrt.dll,usw..) meinem Programm beilege?

    Danke für die hilfe
    schönen Tag noch
    Tristan



  • Zeig mal wie du function dynamisch lädst



  • Das ist die Release Version von der Du sprichst oder ?

    Devil



  • @CMatt

    Zeig mal wie du function dynamisch lädst

    Wenn ich AlphaBlend statisch linke bekomme startet das Programm nicht weil bei unter Win98 keine msimg32.dll gibt. Also schau ich ob es Win98 ist und wenn dann lade ich die Library und hohle die Funktion, und rufe diese dann auch nur auf:
    Wenn dich das echt interessiert:

    typedef bool (*alpha_proc)(  HDC hdcDest,                 // handle to destination DC
      int nXOriginDest,            // x-coord of upper-left corner
      int nYOriginDest,            // y-coord of upper-left corner
      int nWidthDest,              // destination width
      int nHeightDest,             // destination height
      HDC hdcSrc,                  // handle to source DC
      int nXOriginSrc,             // x-coord of upper-left corner
      int nYOriginSrc,             // y-coord of upper-left corner
      int nWidthSrc,               // source width
      int nHeightSrc,              // source height
      BLENDFUNCTION blendFunction  // alpha-blending function); 
    );
    
    alpha_proc pAlpha_proc=NULL;
    HMODULE h;
    
        OSVERSIONINFO osvi;
        osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
        GetVersionEx (&osvi);
       bIsWindows98orLater = 
       (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) &&
       ( (osvi.dwMajorVersion > 4) ||
       ( (osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0) ) );
    
       if(bIsWindows98orLater)
       {
            h = LoadLibrary("msimg32.dll");
            alpha_proc pAlpha_proc = (alpha_proc)GetProcAddress(h, "AlphaBlend");
            if( pAlpha_proc == NULL)  ::MessageBox(0,"AlphaBend in msimg32.dll konnte nicht gefunden werden.",0,0);
    
    // Aufruf
    
            if( pAlpha_proc == NULL) 
                pAlpha_proc (hdc,x,y, bm.bmWidth, bm.bmHeight, hdcMem, 0,0, bm.bmWidth,bm.bmHeight, bf);
       }
    

    @devil81
    Ja ist die Release Funktion:
    Lieg doch daran das bei Win95a die mfc42.dll in Version 4 vorliegt und später immernoch so hieß obwohl version 6.0 drin ist.



  • if( pAlpha_proc == NULL)  ::MessageBox(0,"AlphaBend in msimg32.dll konnte nicht gefunden werden.",0,0);
    // Aufruf
    
            if( pAlpha_proc == NULL) 
                pAlpha_proc (hdc,x,y, bm.bmWidth, bm.bmHeight, hdcMem, 0,0, bm.bmWidth,bm.bmHeight, bf);
    

    Das sollte denk ich mal anders heissen oder?
    if( pAlpha_proc == NULL) => hast du 2mal drin...

    Hab dir wahrscheins net geholfen, aber mach das mal weg...


Anmelden zum Antworten