powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Диалог открытия фалов на API
5 сообщений из 5, страница 1 из 1
Диалог открытия фалов на API
    #33395854
IvanN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Нужно диалоговое окно открытия файлов и чтобы можно было выбрать несколько.
Нашел в APi-Guide примеры. С использованием GetOpenFileName все работает, но при установке флага для выбора неск. файлов &H200 получается какой-то ужасный интерфейс времен виндовс 3.11, а при использовании GetOpenFileNamePreview и флаге &H200 в строку с путем не передаются имена файлов.
Это так должно быть или у меня руки кривые...
...
Рейтинг: 0 / 0
Диалог открытия фалов на API
    #33396220
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_ALLOWMULTISELECT = &H200
Private Const OFN_PATHMUSTEXIST = &H800
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_EXPLORER = &H80000
Private Const OFN_OVERWRITEPROMPT = &H2
Private Const OFN_OPENEXISTING = OFN_HIDEREADONLY _ 
  Or OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST
Public Const OFN_SAVENEW = OFN_HIDEREADONLY Or OFN_OVERWRITEPROMPT

Надо указть в флагах открытия окна OFN_EXPLORER, например.

Код: plaintext
1.
2.
fnFileDialog(strInitDir:="C:\WINDOWS", _
  lngFlags:=OFN_OPENEXISTING Or OFN_ALLOWMULTISELECT _
  Or OFN_EXPLORER)
...
Рейтинг: 0 / 0
Диалог открытия фалов на API
    #33397176
IvanN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, много файлов теперь выделяется! А откуда их считывать, в OFName.lpstrFile теперь получаю только путь, если выбрал более одного файла. Привожу код на всякий случай.
Прошу прошения за тупость, я пока слабо разбираюсь во всем этом..

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
Private Sub Form_Load()
    Dim OFName As OPENFILENAME
    OFName.lStructSize = Len(OFName)
    OFName.lpstrFilter = "Corel Draw (*.cdr)" + Chr$( 0 ) + "*.cdr" + Chr$( 0 ) + "All Files (*.*)" + Chr$( 0 ) + "*.*" + Chr$( 0 )
    OFName.lpstrFile = Space$( 254 )
    OFName.nMaxFile =  255 
    OFName.lpstrFileTitle = Space$( 254 )
    OFName.nMaxFileTitle =  255 
    OFName.lpstrInitialDir = "C:\"    
    OFName.flags = OFN_OPENEXISTING Or OFN_ALLOWMULTISELECT _
    Or OFN_EXPLORER
    
    If GetOpenFileName(OFName) Then
        MsgBox "File to Open: " + Trim$(OFName.lpstrFile)
    Else
        MsgBox "Cancel was pressed"
    End If
End Sub
...
Рейтинг: 0 / 0
Диалог открытия фалов на API
    #33399056
Флаг OFN_ALLOWMULTISELECT позволяет выбирать несколько файлов; возвращает каталог, за которыи следует имена файлов, разделенные между собой пробелами.

Замени MsgBox на Debug.Print. Должно получится так:

C:\WINDOWS файл1.txt файл2.txt
...
Рейтинг: 0 / 0
Диалог открытия фалов на API
    #33399437
IvanN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Все работает.
А я и не догадался, что Msgbox не все выводит. )
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Диалог открытия фалов на API
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]