Страница: 1 |
Проблема с поиском по форуму, к сожалению, не исправлена, так что Возможно с вопросом повторюсь. Трабл таков. При установке в Common Dialog флага OFN_ALLOWMULTISELECT, отвечающего за возможность выбора сразу нескольких файлов, вид диалога меняется (аля WIN95) и пропадает поддержка длинных и русских имен. Как с этим бороться?
Да, народ, у меня тоже самое... Помогите нам!!! 1 Public Type OPENFILENAME вот почти вса флаги Public lFlags As Long 2 ответпараметр флаг должен выглядить так opFile.flags = lFlags Or OFN_ALLOWMULTISELECT Or OFN_EXPLORER можешь хоть все параметры сразу запускать (экспериментируй) путь пиёма говоришь маленький увеличь страку приема opFile .lpstrFile = String(2047, " ") If GetOpenFileName(opFile) <> 0 Then p.s. из кода вырвал прямо Alp, ты не мог бы код функции GetOpenFileName кинуть, которая у тебя в конце проскакивает? При вот таких флагах OFN_ALLOWMULTISELECT Or OFN_EXPLORER с русскими и длинными именами файлов всё стало ОК! Спасибо огромное! Но возникла еще одна проблема. Диалог возвращает строку (CmnDlg.FileName) с именами файлов, разделенными пробелами. Потом её можно разбить в массив с помощью Split. Но если в имени файла тоже есть пробелы, что делать? Можно ли поменять разделитель у диалога? Может ещё какие-нибудь советы или варианты? ребята полбзуйтесь API а то какие вы на...... иг програмисты 'модуль Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Public Type OPENFILENAME вот почти вса флаги Public lFlags As Long ' в кнопку With opFile ' сами смотрите что нужно opFile.lpstrFile или opFile.lpstrFileTitle Страница: 1 |
Вопрос: Проблема с Common Dialog
Добавлено: 07.12.03 09:47
Автор вопроса: Ворон | ICQ: 178095693
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #1
Добавлено: 07.12.03 10:55
Номер ответа: 2
Автор ответа:
alp
Вопросов: 3
Ответов: 6
Web-сайт:
Профиль | | #2
Добавлено: 07.12.03 16:44
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
lPWCFilenHook As Long
lpTemplateName As String
End Type
Public lFlags As Long
Public opFile As OPENFILENAME
Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_ENABLEINCLUDENOTIFY = &O400000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_LONGNAMES = &H200000
Public Const OFN_EXPLORER = &H80000
Public Const OFN_ENABLESIZING = &H800000
Public Const OFN_CREATEPROMPT = &H2000
opFile.nMaxFile = 2048
opFile.lpstrFileTitle = String(2047, " ")
opFile.nMaxFileTitle = 2048
Номер ответа: 3
Автор ответа:
Ворон
ICQ: 178095693
Вопросов: 6
Ответов: 24
Профиль | | #3
Добавлено: 08.12.03 12:05
Номер ответа: 4
Автор ответа:
alp
Вопросов: 3
Ответов: 6
Web-сайт:
Профиль | | #4
Добавлено: 08.12.03 14:43
Public Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
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
lPWCFilenHook As Long
lpTemplateName As String
End Type
Public lFlags As Long
Public opFile As OPENFILENAME
Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_ENABLEINCLUDENOTIFY = &O400000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_LONGNAMES = &H200000
Public Const OFN_EXPLORER = &H80000
Public Const OFN_ENABLESIZING = &H800000
Public Const OFN_CREATEPROMPT = &H2000
.hWndOwner = gen.hWnd
.flags = lFlags Or OFN_ALLOWMULTISELECT Or OFN_EXPLORER
'.lpstrInitialDir = App.Path
.lpstrTitle = temps
.lpstrFilter = "All" & vbNullChar & "*.*"
.lpstrFile = String(2047, " ")
.nMaxFile = 2048
.lpstrFileTitle = String(2047, " ")
.nMaxFileTitle = 2048
.lStructSize = Len(opFile)
End With
If GetOpenFileName(opFile) <> 0 Then
temps = Mid(opFile.lpstrFile, 1, InStrRev(opFile.lpstrFile, vbNullChar, -1) - 1) ' строка удаляет нулевой символ в конце
Label1.caotion=temps
End If