Нестандартные элементы в стандартных 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) поместив на это дело ползунок.
Как это вообще делается и решаемо ли?

Решение задачи: «Нестандартные элементы в стандартных 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>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5