I recently implemented a browse for folder dialog for ooDialog and ran into a problem that is only going to get worse as I try to implement functionality provided by Windows 7.
As is probably obvious to people, Windows Vista and Windows 7 has features and functionality that are not available on XP. Up until now, I've been able to add Vista only features to ooDialog by raising a syntax condition if a Vista or later only method is invoked when ooDialog is running on XP or earlier. The documentation specifies this for those methods.
For instance, the MonthCalendar getCalendarCount() method will only work on Vista or later. If you invoke that method while on XP a syntax condition is raised. So far, good. If the ooDialog programmer needs the program to run on XP, she can't use that method in her program. Which is fine, the method absolutely can not work on XP any way.
But, when I was implementing the BrowseForFolder dialog I wanted to us a Windows API that is only available in Vista or later. The technique I describe above doesn't work because if the API call is compiled in to the oodialog.dll, the operating system won't load the DLL and ooDialog simply won't work on XP. Eventually I was able to find a work around that bypassed the Vista only API. But, it made the whole thing much harder than need be, and for a lot of the new functionality in Windows 7 (and Vista,) there simply won't be any work arounds.
So, I'm curious as to what users of ooDialog would like to see.
* One solution would be to have 2 versions of oodialog.dll and oodialog.cls. One version would only load on Vista or later and the other version would be as it is now and load on XP, Vista, and Windows 7. The Vista or later version would have Windows 7 functionality not present in XP. The other version would have some Windows 7 features, that would only work if you were running on Windows 7, but ooDialog could still be used on XP.
* Another solution would be to not add any new features of Windows 7 and restrict ooDialog to XP only.
* Another solution would be to pick some arbitrary release number and say XP is no longer supported. Say ooDialog 4.3.0 is only supported on Vista or higher. If you need to run on XP, then you must use a 4.2.x ooDialog.
I personally would like to move on, but I'm wondering how this would effect others?