Изменение / добавление элементов управления в окнах Открыть / Сохранить общий диалог - PullRequest
6 голосов
/ 29 сентября 2008

Есть ли способ изменить / добавить в окно Открыть / Сохранить общий диалог для добавления дополнительных функций?

На работе у нас есть область на сервере с сотнями «папок заданий» - просто обычные папки Windows, созданные / управляемые автоматически приложением базы данных для размещения информации о работе (электронные письма / отсканированные факсы / документы Word / электронные таблицы / фотографии и т. Д.) ) Папки именуются номером задания.

Я хотел бы расширить стандартный диалог открытия / сохранения с помощью комбинированного списка, который ищет папки заданий на основе тегов из базы данных, чтобы независимо от того, что делают мои пользователи, они могли легко найти свой путь к нужной папке заданий, чтобы найти / сохранить их. работа

Подключение к базе данных и предоставление функциональности для поиска не проблема, но есть ли способ добавить элемент управления комбинированного списка (в идеале с событием нажатия клавиши / нажатия клавиши) в диалог?

Или создать свой собственный диалог и использовать его вместо стандартного? то есть из ЛЮБОГО приложения мое диалоговое окно будет называться, обеспечивая легкий доступ к папкам вакансий. Если они находятся в перспективе, они могут быстро найти папку с заданиями, если они используют Блокнот, они все равно могут легко найти папку.

Это будет означать новый унифицированный способ поиска папок вакансий в любом приложении.

В идеале кто-то знает способ использования VB / VB.net / C #, но я предполагаю, что, если это возможно, вероятно, будет C ++.

Ответы [ 3 ]

5 голосов
/ 29 сентября 2008

Как сказал Марк Рэнсом, вы можете сделать это с флагами OFN ENABLETEMPLATE и OFN ENABLEHOOK. Затем вы указываете ресурс диалога для члена данных lpTemplateName структуры OPENFILENAME. Чтобы правильно расположить элементы управления, нужно немного проб и ошибок.

Процедура подключения, которую вы пишете, будет получать оконные сообщения, специфичные для этого диалога - вас особенно интересуют сообщения WM_NOTIFY - есть несколько специальных (CDN INITDONE, CDN FOLDERCHANGE и т. Д.).

Я несколько раз создавал довольно сложные, хотелось бы добавить скриншот.

2 голосов
/ 29 сентября 2008

Соответствующая документация Microsoft для Windows API находится здесь:
http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms646839(VS.85).aspx

Обратите особое внимание на флаги OFN_ENABLETEMPLATE и OFN_ENABLEHOOK.

Как вы говорите, эта информация наиболее актуальна, когда вы работаете в C / C ++.

0 голосов
/ 29 сентября 2008

Ваша программа может установить начальную папку, поэтому, если вы знаете номер задания (и, следовательно, название папки), вы можете настроить запуск диалога с правильной папкой, уже открытой. Кроме того, я не думаю, что вы можете многое сделать, не написав для него всего расширения оболочки.

...