PDA

Просмотр полной версии : Изменение названиия кнопки CFileDialog



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

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

Может быть кто нибудь смог воспользоватся функцией SetControlText :?:

Tima
16.03.2005, 11:34
Наверное следует создать свой диалог и грузить его по Save и SaveAs. Дело в том что этот диалог из ядра MFC и если в НЕМ изменять текст кнопки, то это следует делать другим образом - получить хэндл кнопки и поменять только тогда текст (не очень классный вариант).

Romeo
17.03.2005, 10:22
Не следует изобретать велосипед, господин Tima. Это диалог не из ядра MFC, а из ядра Windows. Есть Win32 API функции GetOpenFileName и GetSaveFileName, которые вызывают всем знакомый модальный диалог для выбора файла. Эти же функции позволяю программисту изменять внешний вид диалога посредством имплементирования хук-функции и задания её адреса в input структуре OPENFILENAME, поле lpfnHook. Подробности, как всегда, в MSDN.

Tviksi
18.03.2005, 00:27
Идея с хуком не плоха, вот только одно но.

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

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

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

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

И все же:
Неужели никто, ни разу, не пользовался функцией CFileDialog::SetControlText,
она меня жутко заинтриговала:)

Romeo
18.03.2005, 11:18
Верно, именно с помощью этой функции и нужно изменять. Но изменять нужно в хуке. До вызова DoModal не существует HWND окна OpenDialog'а, поэтому просто сообщению некуда лететь :)