Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Проблема с Common Dialog Добавлено: 07.12.03 09:47  

Автор вопроса:  Ворон | ICQ: 178095693 

Проблема с поиском по форуму, к сожалению, не исправлена, так что Возможно с вопросом повторюсь. Трабл таков. При установке в Common Dialog флага OFN_ALLOWMULTISELECT, отвечающего за возможность выбора сразу нескольких файлов, вид диалога меняется (аля WIN95) и пропадает поддержка длинных и русских имен. Как с этим бороться?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #1 Добавлено: 07.12.03 10:55

Да, народ, у меня тоже самое...

Помогите нам!!!

Ответить

Номер ответа: 2
Автор ответа:
 alp



Вопросов: 3
Ответов: 6
 Web-сайт: www.bigc-s.narod.ru
 Профиль | | #2
Добавлено: 07.12.03 16:44

1

Public 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
    lPWCFilenHook As Long
    lpTemplateName As String
End Type
Public lFlags As Long

Public opFile As OPENFILENAME

вот почти вса флаги

Public lFlags As Long
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

2 ответпараметр флаг должен выглядить так

opFile.flags = lFlags Or OFN_ALLOWMULTISELECT Or OFN_EXPLORER

можешь хоть все параметры сразу запускать (экспериментируй)

путь пиёма говоришь маленький

увеличь страку приема

opFile .lpstrFile = String(2047, " ")
 opFile.nMaxFile = 2048
opFile.lpstrFileTitle = String(2047, " ")
 opFile.nMaxFileTitle = 2048

If GetOpenFileName(opFile) <> 0 Then

p.s. из кода вырвал прямо

Ответить

Номер ответа: 3
Автор ответа:
 Ворон



ICQ: 178095693 

Вопросов: 6
Ответов: 24
 Профиль | | #3 Добавлено: 08.12.03 12:05

Alp, ты не мог бы код функции GetOpenFileName кинуть, которая у тебя в конце проскакивает?

При вот таких флагах OFN_ALLOWMULTISELECT Or OFN_EXPLORER с русскими и длинными именами файлов всё стало ОК! Спасибо огромное!

Но возникла еще одна проблема. Диалог возвращает строку (CmnDlg.FileName) с именами файлов, разделенными пробелами. Потом её можно разбить в массив с помощью Split. Но если в имени файла тоже есть пробелы, что делать? Можно ли поменять разделитель у диалога? Может ещё какие-нибудь советы или варианты?

Ответить

Номер ответа: 4
Автор ответа:
 alp



Вопросов: 3
Ответов: 6
 Web-сайт: www.bigc-s.narod.ru
 Профиль | | #4
Добавлено: 08.12.03 14:43

ребята полбзуйтесь API а то какие вы на...... иг програмисты

'модуль

 Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Public Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

Public 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
    lPWCFilenHook As Long
    lpTemplateName As String
End Type
Public lFlags As Long

Public opFile As OPENFILENAME

вот почти вса флаги

Public lFlags As Long
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

' в кнопку

With opFile
 .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

' сами смотрите что нужно opFile.lpstrFile или opFile.lpstrFileTitle
End If

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам