===[ Программизм / Windows ]=== #post-id: 7774-01-03 #original-date: 7.11.2021 Sun #original-time: 1:03 AM #original-day: 7774 #original-host: WinXP Home SP3 (Build 2600) Есть такие функции как GetOpenFileName() и GetSaveFileName(), которые выводят диалоги открытия и сохранения файла. Они могут показывать диалог в новом стиле и диалог в старом стиле (как в Windows 3.xx). При чём флаг OFN_EXPLORER прямо не влияет на выбор вида диалога, и в обычных ситуациях всегда показывается новый диалог независимо от этого флага. Чтобы показать старый диалог, нужно не только не указать этот флаг, но и подкинуть функции хук, который будет всегда возвращать FALSE (тоесть сигнализировать, что сообщение должна обработать библиотека, а не код хука). https://pics.lindachan.net/2021/11/cd/Screenshot%202021-11-07%2002-27-09_.PNG Это присказка. Сказка в том, что в Windows 2000 и Windows XP новым был диалог с панелькой неких предопределённых папок слева (которые правились через TweakUI). https://pics.lindachan.net/2021/11/cd/Screenshot%202021-11-07%2002-26-57_.PNG В Windows Vista диалог переделали, и в левую часть впилили дерево каталогов, а сверху убрали раскрывающийся список с деревом каталогов, впилив вместо него хитрый текстбокс с путём к текущему каталогу. И все нормально написанные программы в новой системе тут же начали показывать новый диалог, если, конечно не использовали хитрые шаблоны. https://pics.lindachan.net/2021/11/cd/Screenshot%202021-11-07%2002-33-20_.PNG Но я заметила, что были программы, которые выводили диалог, выглядящий как в Windows XP. Экспериментируя, я выяснила, что флаг OFN_EX_NOPLACESBAR, который в предыдущих версиях системы отрубал сайдбар слева и превращал диалог в такой, какой был в Windows 9x или NT4. https://pics.lindachan.net/2021/11/cd/Screenshot%202021-11-07%2002-27-29_.PNG В Windows Vista и выше оно работает примерно так же, и диалог даже начинает выглядеть примерно так же. Но это всё равно не то. https://pics.lindachan.net/2021/11/cd/Screenshot%202021-11-07%2002-34-14_.PNG Оказалось, что для того чтобы получить диалог как в XP. нужно провернуть тот же трюк, как со старым диалогом: указываем флаг OFN_EXPLORER и подкидываем такой же хук (что характерно, прототип у старого и нового хука одинаковый, но оба задокументированы отдельно друг от друга). И получаем немного ностальгии. https://pics.lindachan.net/2021/11/cd/Screenshot%202021-11-07%2002-34-46_.PNG #upd(7.11.2021 - 3:32 AM): Кстати, в Windows 3.xx диалог выглядел так. https://pics.lindachan.net/2021/11/cd/krnl386%202021-11-07%2003-10-02%20%5B000%5D_.PNG В Windows 7 старый диалог выглядит совершенно идентично Windows XP, даже сползание кнопок не поправили. https://pics.lindachan.net/2021/11/cd/Screenshot%202021-11-07%2002-33-50_.PNG #upd(7.11.2021 - 4:26 AM): Забавно, что впервые диалог с сайдбаром был опробован в Office 2000, а потом его уже портировали в библиотеку общих диалогов Windows.