Изменение названиия кнопки CFileDialog

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Eugie, Romeo, Hawk

Ответить
Tviksi
Сообщения: 9
Зарегистрирован: 14 мар 2005, 21:44
Откуда: Киев
Контактная информация:

14 мар 2005, 22:15

Нужно изменить название кнопки в стандартном диалоге открытия/сохранеия файла.

Буду благодарна за любую помощь :)

Может быть кто нибудь смог воспользоватся функцией SetControlText :?:
Tima
Сообщения: 43
Зарегистрирован: 23 сен 2004, 11:17
Откуда: Харьков
Контактная информация:

16 мар 2005, 11:34

Наверное следует создать свой диалог и грузить его по Save и SaveAs. Дело в том что этот диалог из ядра MFC и если в НЕМ изменять текст кнопки, то это следует делать другим образом - получить хэндл кнопки и поменять только тогда текст (не очень классный вариант).
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

17 мар 2005, 10:22

Не следует изобретать велосипед, господин Tima. Это диалог не из ядра MFC, а из ядра Windows. Есть Win32 API функции GetOpenFileName и GetSaveFileName, которые вызывают всем знакомый модальный диалог для выбора файла. Эти же функции позволяю программисту изменять внешний вид диалога посредством имплементирования хук-функции и задания её адреса в input структуре OPENFILENAME, поле lpfnHook. Подробности, как всегда, в MSDN.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Tviksi
Сообщения: 9
Зарегистрирован: 14 мар 2005, 21:44
Откуда: Киев
Контактная информация:

18 мар 2005, 00:27

Идея с хуком не плоха, вот только одно но.

Я создаю и вызываю диалог открытия/сохранеия файла в документе.

Мне нужно при создании объекта с FileDialog задать
CWnd* pParentWnd;

Собственно pParentWnd мне и для хука понадобится.

А вот получить его никак не получается :(

И все же:
Неужели никто, ни разу, не пользовался функцией CFileDialog::SetControlText,
она меня жутко заинтриговала :)
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

18 мар 2005, 11:18

Верно, именно с помощью этой функции и нужно изменять. Но изменять нужно в хуке. До вызова DoModal не существует HWND окна OpenDialog'а, поэтому просто сообщению некуда лететь :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить