Есть такие функции как GetOpenFileName() и GetSaveFileName(), которые выводят диалоги открытия и сохранения файла. Они могут показывать диалог в новом стиле и диалог в старом стиле (как в Windows 3.xx). При чём флаг OFN_EXPLORER прямо не влияет на выбор вида диалога, и в обычных ситуациях всегда показывается новый диалог независимо от этого флага. Чтобы показать старый диалог, нужно не только не указать этот флаг, но и подкинуть функции хук, который будет всегда возвращать FALSE (тоесть сигнализировать, что сообщение должна обработать библиотека, а не код хука). Это присказка. Сказка в том, что в Windows 2000 и Windows XP новым был диалог с панелькой неких предопределённых папок слева (которые правились через TweakUI). В Windows Vista диалог переделали, и в левую часть впилили дерево каталогов, а сверху убрали раскрывающийся список с деревом каталогов, впилив вместо него хитрый текстбокс с путём к текущему каталогу. И все нормально написанные программы в новой системе тут же начали показывать новый диалог, если, конечно не использовали хитрые шаблоны. Но я заметила, что были программы, которые выводили диалог, выглядящий как в Windows XP. Экспериментируя, я выяснила, что флаг OFN_EX_NOPLACESBAR, который в предыдущих версиях системы отрубал сайдбар слева и превращал диалог в такой, какой был в Windows 9x или NT4. В Windows Vista и выше оно работает примерно так же, и диалог даже начинает выглядеть примерно так же. Но это всё равно не то. Оказалось, что для того чтобы получить диалог как в XP. нужно провернуть тот же трюк, как со старым диалогом: указываем флаг OFN_EXPLORER и подкидываем такой же хук (что характерно, прототип у старого и нового хука одинаковый, но оба задокументированы отдельно друг от друга). И получаем немного ностальгии.
Linda-chan
Линда Кайе
Дата рождения: 01.11.1983
Тотальная неудачница и убийца жёстких дисков. Самая большая поклонница Ариэль. Член ордена Вселенского тормоза имени Осаки-сан. Любительница каваййных переднеприводных машинок. Суккуб на полставки. Когти прилагаются.