Michael Haephrati Ответов: 1

Как заменить контекстное меню правой кнопки мыши по умолчанию в диалоговом окне открытия файла своим собственным?


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

Что я уже пробовал:

добавление:

UINT CALLBACK OfnHookProc(HWND hDlg, UINT uMsg, UINT wParam, LONG lParam)


а затем обратитесь к нему с помощью
ofn.lpfnHook = OfnHookProc;

Я думаю, что идеальным решением будет класс, производный от OPENFILENAME.

1 Ответов

Рейтинг:
2

Rick York

У меня нет конкретного решения, но вы на правильном пути. Давным-давно я сделал производный класс FileOpenDialog или то, что когда-либо MFC называл его версией, и сделал пользовательский диалог, который включал предварительный просмотр растрового изображения. С тех пор это было сделано устаревшим, но именно это я и сделал для него - добавил пользовательскую процедуру lpfnHook, а затем сделал обработчики сообщений в ней, чтобы обрабатывать вещи для предварительного просмотра. Это один из способов, которым вы можете пойти с ним.

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

Еще один вариант-сделать свой собственный полностью настраиваемый диалог открытия файла, и я тоже это сделал. Существует семейство функций DlgDirList, которые помогут вам в этом. Это даст вам полный контроль над меню правой кнопки мыши.

Желаю удачи.


Michael Haephrati

DlgDirList - это хорошая идея!

Michael Haephrati

Рик, если вы случайно найдете какой-нибудь фрагмент кода для подключения диалогового окна открытия файла, пожалуйста, дайте мне знать.

Rick York

Вот один пример : https://www.codeproject.com/Articles/177/Standard-file-open-dialog-with-preview

Статья отсутствует, но кодекс есть. Я думаю.

Michael Haephrati

Добавление элементов управления очень просто. Вот лучший пример: http://www.equestionanswers.com/vcpp/file-open-dialog.php. Однако добавить контекстное меню и подключить параметры расширения оболочки довольно сложно.