Ik maak in mijn software gebruik van File Open/Save vensters en dat deed ik dus eerst met GetSaveFileName.
In Vista is er echter best veel aangepast aan deze vensters, en om de nieuwe functionaliteit te gebruiken moet je dan ook de IFileDialog interface gebruiken.
Het lukte perfect met een if statement om op XP de oude manier te gebruiken, en in Vista de nieuwe manier.
Om de dialog echter verder in te stellen, wil je dan functies als SetDefaultFolder gebruiken.
Om het hiervoor benodigde ShellItem object aan te maken, moet je echter gebruik maken van SHCreateItemFromParsingName.
Dit is een functie die enkel in de Vista-versie van shell32.dll voorkomt.
Het probleem is nu dat na het compileren van mijn programma ik een foutboodschap krijg dat deze functie niet gevonden kan worden als ik het programma start in XP.
Start ik het programma in Vista dan is er geen probleem.
Het probleem is dus dat die functie al word opgezocht tijdens het starten, ook al zal de functie nooit uitgevoerd worden.
Ik kan met Google niets nuttigs vinden omdat dan alle resultaten te maken hebben met het compatibel maken van XP programma's met Vista vanuit een gebruikersstandpunt.
Ik vroeg me dus af hoe jullie hiermee omgaan en of er een handige manier is om dit soort functies in Vista te kunnen gebruiken zonder dat het niet meer werkt in XP.
Ik vermoed dat het met LoadLibrary wel mogelijk zal zijn om enkel in Vista de dll te laden en die functie op te zoeken, maar ik heb het gevoel dat dit behoorlijk omslachtig werkt (dan moet ik ook voor elke functie die ik zo wil gebruiken functie-pointer definities maken denk ik?)
In Vista is er echter best veel aangepast aan deze vensters, en om de nieuwe functionaliteit te gebruiken moet je dan ook de IFileDialog interface gebruiken.
Het lukte perfect met een if statement om op XP de oude manier te gebruiken, en in Vista de nieuwe manier.
Om de dialog echter verder in te stellen, wil je dan functies als SetDefaultFolder gebruiken.
Om het hiervoor benodigde ShellItem object aan te maken, moet je echter gebruik maken van SHCreateItemFromParsingName.
Dit is een functie die enkel in de Vista-versie van shell32.dll voorkomt.
Het probleem is nu dat na het compileren van mijn programma ik een foutboodschap krijg dat deze functie niet gevonden kan worden als ik het programma start in XP.
Start ik het programma in Vista dan is er geen probleem.
Het probleem is dus dat die functie al word opgezocht tijdens het starten, ook al zal de functie nooit uitgevoerd worden.
Ik kan met Google niets nuttigs vinden omdat dan alle resultaten te maken hebben met het compatibel maken van XP programma's met Vista vanuit een gebruikersstandpunt.
Ik vroeg me dus af hoe jullie hiermee omgaan en of er een handige manier is om dit soort functies in Vista te kunnen gebruiken zonder dat het niet meer werkt in XP.
Ik vermoed dat het met LoadLibrary wel mogelijk zal zijn om enkel in Vista de dll te laden en die functie op te zoeken, maar ik heb het gevoel dat dit behoorlijk omslachtig werkt (dan moet ik ook voor elke functie die ik zo wil gebruiken functie-pointer definities maken denk ik?)