GetOpenFileName: Как получить выбранный тип файла?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

GetOpenFileName: Как получить выбранный тип файла?

Сообщение arthur2 » 09.01.2010 (Сб) 6:59

После закрытия диалогового окна - понятно, как :) А вот в функции обратного вызова, когда юзер меняет тип файла? Сам этот момент ловится без проблем, а вот какой именно тип файла выбран, узнать не получается.
Код: Выделить всё
Public Function DialogHookFunction(ByVal hDlg As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Static DlgHwnd As Long

On Error Resume Next

   Select Case wMsg
   Case WM_INITDIALOG
        DlgHwnd = GetParent(hDlg)
   Case WM_NOTIFY

           Dim tOFNs As OFNOTIFYshort

           CopyMemory tOFNs, ByVal lParam, Len(tOFNs)
           
           Select Case tOFNs.hdr.code
           Case CDN_TYPECHANGE
           Stop
'           как в этот момент получить выбранный фильтр?

'           так я пробовал:
                Dim opm As OFN_TEMP
                CopyMemory opm, ByVal tOFNs.lpOFN, Len(opm)
                Debug.Print opm.CustomFilter
                Dim b() As Byte
                ReDim b(40)
                CopyMemory b(0), ByVal opm.CustomFilter, 40
                Dim s As String
                s = b
                Debug.Print s
                s = StrConv(s, vbUnicode)
                Debug.Print s
           
'           Case CDN_SELCHANGE
'           Case CDN_FILEOK
'           Case CDN_FOLDERCHANGE
'           Case CDN_HELP
           End Select
  Case WM_DESTROY
  Case Else
  End Select

End Function
Вложения
test.zip
Как получить выбранный пользователем фильтр из процедуры обратного вызова?
(2.54 Кб) Скачиваний: 41
Артур
 
   

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: GetOpenFileName: Как получить выбранный тип файла?

Сообщение alibek » 09.01.2010 (Сб) 9:56

В структуре возвращается FilterIndex.
Lasciate ogni speranza, voi ch'entrate.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: GetOpenFileName: Как получить выбранный тип файла?

Сообщение arthur2 » 09.01.2010 (Сб) 12:51

Спасибо :)

Обидно - ведь мог бы и сам догадаться по названию :oops:
Артур
 
   


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 27

    TopList