"Ultimate Grid" von VC++ 6.0 zu VC++9.0 fehler



  • Hallo

    Wenn ich ein beispiel von Ultimate Grid unter VC++6.0 übersetze ist alles OK aber wenn das gleiche Beispiel in VC++9.0 übersetze kommt folgende Fehlermeldung:

    c:\programmier\vc++6.0beispiele\ultimategrid72\1\ultimate grid\source\ugxpthemes.cpp(573) : warning C4091: '': Ignoriert auf der linken Seite von 'const int', wenn keine Variable deklariert wurde
    c:\programmier\vc++6.0beispiele\ultimategrid72\1\ultimate grid\source\ugxpthemes.cpp(573) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante'
    c:\programmier\vc++6.0beispiele\ultimategrid72\1\ultimate grid\source\ugxpthemes.cpp(573) : error C2106: '=': Linker Operand muss ein L-Wert sein
    

    dem bin ich nachgegangen und bin auf folgenden code in der Datei ...\Ultimate Grid\Source\UGXPThemes.cpp gestoßen.

    bool UGXPThemes::GetThemeRect(LPCWSTR theme, int iPartId, int iStateId, RECT *pRect)
    {
    	bool success = false;
    
    	if (useThemes)
    	{
    		HANDLE themeHandle = OpenThemeData(NULL, theme);
    
    		if (themeHandle)
    		{
    

    Fehler

    const int TMT_DEFAULTPANESIZE = 5002;
    
    HRESULT hr = GetThemeRect(themeHandle, iPartId, iStateId, TMT_DEFAULTPANESIZE, pRect);
    			success = SUCCEEDED(hr);
    		}
    	}
    	return success;
    }
    

    Die Constante TMT_DEFAULTPANESIZE ist aber schon in der Datei VSSYM32.H definiert.
    Wenn ich im oben gezeigten Code die Zeile auskommentiere läuft alles Super unter VC++9.0.

    Ist hier ein Bug ? Leigt hier ein Einstellungs Fehler im VC++9.0 vor oder...?

    Gruß Califax



  • Hallo,

    da das Symbol TMT_DEFAULTPANESIZE schon in aktuellen Windows-SDK-Headerdateien über ein #define eingeführt wird, kommt es zur Ersetzung:

    const int 5002 = 5002;
    

    woraus sich die Fehler ergeben. Lässt man die Zeile weg, kann nichts passieren, weil die 5002 direkt in den GetThemeRect-Aufruf eingesetzt wird:

    // noch vor dem Kompilieren durch Präprozessor ersetzt:
    HRESULT hr = GetThemeRect(themeHandle, iPartId, iStateId, 5002, pRect
    

    MfG,

    Probe-Nutzer



  • Danke
    Gruß Califax


Anmelden zum Antworten