2013-07-22 3 views
0

Мое приложение поддерживает XP и выше, и я пытаюсь использовать новые интерфейсы CFileDialog (т. Е. GetIFileOpenDialog()) при работе под Vista и выше (для соблюдения ограничений этих интерфейсов).Поддержка CFileDialog XP и Vista

Итак, я проверяю версию ОС и стараюсь использовать эти интерфейсы, если это необходимо, и откидываться на старые методы для XP. Проблема в том, что при работе под XP у меня возникают сбои LoadLibrary (код в DLL), поэтому, похоже, происходит некоторая ранняя привязка. Как только я прокомментирую код, который использует эти интерфейсы, тогда LoadLibrary преуспеет.

Возможно ли вообще иметь CFileDialog-код, используя функции Vista, работающие под XP, даже если код не вызывается?

Благодаря

ответ

0

Вам нужно будет вручную загрузить соответствующую библиотеку с LoadLibrary() (он не будет загружен во второй раз, но нужна хорошая ручка для него), а затем использовать GetProcAddress(), чтобы получить адрес функция (GetIFileOpenDialog). Если вы просто используете функцию Vista напрямую, она не будет загружаться на XP, так как она, как вы говорите, привязывает функцию напрямую.

+0

Любая идея, как найти, где реализован GetIFileOpenDialog? Я попробовал comdlg32.dll, и его там нет. – user2608239

+0

Держитесь, это использует MFC, не так ли? Таким образом, в первую очередь вам понадобится правильная версия MFC на машине XP. –

+0

Да, но я в настоящее время пытаюсь динамически вызвать GetIFileOpenDialog() на компьютере под управлением Windows 7, который, как я знаю, отлично работает, когда я называю это статически. Джунгли MFC dll - это лабиринт для просеивания, и я не могу найти, где реализован GetIFileOpenDialog(). Я даже пытался использовать все через интерфейсы COM, и у меня такая же проблема (например, моя dll не будет загружаться на XP). Как будто все должно быть ранней привязано. – user2608239

Смежные вопросы