Нестандартные элементы в стандартных Save и Open dialogs - VB
Формулировка задачи:
Ну, предпочитаю сейчас эти окна выводить через API, в духе как здесь.
https://www.sql.ru/forum/actualthread.aspx?bid=22&tid=730702&hl=
Вопрос в чем...
Многие программы выводят в этих окнах какие-либо нестандартные элементы.
Ну скажем предпросмотр картинки или проигрывание wav-файла.
С одной стороны элементы эти явно субъективные для разных программ, а с другой не похоже что авторы прог вручную рисуют эти "почти стандартные" Open и Save.
Пример простой задачи, которую вижу: при сохранении картинки SaveAs.. в формате jpg (JPEG) дать возможность пользователю выбрать уровень компрессии JPEG (от 1 до 100) поместив на это дело ползунок.
Как это вообще делается и решаемо ли?
https://www.sql.ru/forum/actualthread.aspx?bid=22&tid=730702&hl=
Вопрос в чем...
Многие программы выводят в этих окнах какие-либо нестандартные элементы.
Ну скажем предпросмотр картинки или проигрывание wav-файла.
С одной стороны элементы эти явно субъективные для разных программ, а с другой не похоже что авторы прог вручную рисуют эти "почти стандартные" Open и Save.
Пример простой задачи, которую вижу: при сохранении картинки SaveAs.. в формате jpg (JPEG) дать возможность пользователю выбрать уровень компрессии JPEG (от 1 до 100) поместив на это дело ползунок.
Как это вообще делается и решаемо ли?
Решение задачи: «Нестандартные элементы в стандартных Save и Open dialogs»
textual
Листинг программы
<font color="blue">Public</font> <font color="blue">Function</font> OFNHookProc(<font color="blue">ByVal</font> hWnd <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> uMsg <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> wParam <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> lParam <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Dim</font> hWndParent <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Dim</font> hItem <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Dim</font> tNMH <font color="blue">As</font> NMHDR
<font color="blue">Dim</font> Index <font color="blue">As</font> <font color="blue">Integer</font>
<font color="blue">Select</font> <font color="blue">Case</font> uMsg
<font color="blue">Case</font> WM_INITDIALOG
hWndParent = GetParent(hWnd)
<font color="blue">Call</font> SendMessage(hWndParent, CDM_SETCONTROLTEXT, ID_HELP, <font color="blue">ByVal</font> <font color="teal">"Settings"</font>)
hItem = GetDlgItem(hWndParent, ID_HELP)
<font color="blue">If</font> IsWindowEnabled(hItem) <font color="blue">Then</font> <font color="blue">Call</font> EnableWindow(hItem, <font color="darkblue"><b>0</b></font>)
<font color="blue">Case</font> WM_NOTIFY
CopyMemory tNMH, <font color="blue">ByVal</font> lParam, Len(tNMH)
<font color="blue">Select</font> <font color="blue">Case</font> tNMH.code
<font color="blue">Case</font> CDN_HELP
MsgBox <font color="teal">"help"</font>
<font color="00AA00">' Help clicked (that is settings)</font>
<font color="blue">Case</font> CDN_TYPECHANGE
hWndParent = GetParent(hWnd)
hItem = GetDlgItem(hWndParent, ID_FILETYPE)
Index = SendMessage(hItem, CB_GETCURSEL, <font color="blue">ByVal</font> <font color="darkblue"><b>0</b></font>&, <font color="blue">ByVal</font> <font color="darkblue"><b>0</b></font>&) + <font color="darkblue"><b>1</b></font>
hItem = GetDlgItem(hWndParent, ID_HELP)
<font color="blue">If</font> Index = <font color="darkblue"><b>4</b></font> <font color="blue">Then</font>
<font color="blue">If</font> <font color="blue">Not</font> (IsWindowEnabled(hItem)) <font color="blue">Then</font> <font color="blue">Call</font> EnableWindow(hItem, <font color="darkblue"><b>1</b></font>)
<font color="blue">Else</font>
<font color="blue">If</font> IsWindowEnabled(hItem) <font color="blue">Then</font> <font color="blue">Call</font> EnableWindow(hItem, <font color="darkblue"><b>0</b></font>)
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">Case</font> <font color="blue">Else</font>
<font color="blue">End</font> <font color="blue">Select</font>
<font color="blue">Case</font> <font color="blue">Else</font>
<font color="blue">End</font> <font color="blue">Select</font>
<font color="blue">End</font> <font color="blue">Function</font>