Страница: 1 |
Страница: 1 |
Вопрос: Коммон диалог в старом стиле
Добавлено: 17.03.06 19:48
Автор вопроса: Юрий
Привет! Знаю, что в Си Билдере при использовании коммон диалога можно подключить к нему некий флаг ...OldStyleDialog. При этом диалоги открытия - сохранения будут отображаться в старом стиле Win 95 - 98 при работе в Win XP. Вопрос: есть ли подобный флаг в VB6? Спасибо.
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 17.03.06 22:49
вероятно прописать тот же самый флаг в Flags св-во...
Номер ответа: 2
Автор ответа:
Юрий
Вопросов: 11
Ответов: 30
Профиль | | #2
Добавлено: 17.03.06 23:26
Пробовал, не помогает. Может VB не поддерживает этот флаг...?
Номер ответа: 3
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #3
Добавлено: 18.03.06 00:20
If you want the old-style user interface, omit the OFN_EXPLORER flag and provide a replacement old-style template or hook procedure. If you want the old style but do not need a custom template or hook procedure, simply provide a hook procedure that always returns FALSE.
Номер ответа: 4
Автор ответа:
Юрий
Вопросов: 11
Ответов: 30
Профиль | | #4
Добавлено: 18.03.06 01:30
Ничего не понял... Пожалуйста не отправляйте в MSDN, лучше как - нибудь по-проще, по нашему ))
Номер ответа: 5
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #5
Добавлено: 18.03.06 02:26
Это относится не к контролу из comdlg.ocx, а к диалогу, выводимому апи-функцией GetOpenFileName. Не устанавливаешь флаг OFN_EXPLORER и делаешь callback, который ничего не делает, только возвращает ноль на любое сообщение.
Применительно к контролу из осх - там что-то не видно, что можно указать свой callback, поэтому путей получения старого стиля с использованием ocx не видно...
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 18.03.06 09:57
т.о. берем с этого сайте cDlgEx или что-то подобное в примерах и его переделываем на свой лад (кстати, на форуме тоже можно найти по заветному слову GetOpenFileName)
Номер ответа: 7
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #7
Добавлено: 18.03.06 16:02
Опять же-смотри пакет SpyWorks от Desaware. ВСЕ ТАМ ЕСТЬ, что только может понадобиться вибишному прогеру. Не пойму, почему Павел еще не сделал ссылку на их сайт.
Номер ответа: 8
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #8
Добавлено: 18.03.06 21:09
2 Fever: линк кинуть можешь?
Номер ответа: 9
Автор ответа:
Юрий
Вопросов: 11
Ответов: 30
Профиль | | #9
Добавлено: 19.03.06 00:35
Есть код, кстати скачаный с VBNet:
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 Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Sub Command1_Click()
Dim ofn As OPENFILENAME
ofn.lStructSize = Len(ofn)
ofn.hwndOwner = Form1.hWnd
ofn.hInstance = App.hInstance
ofn.lpstrFilter = "Text Files (*.txt)" + Chr$(0) + "*.txt" + Chr$(0) + "Rich Text Files (*.rtf)" + Chr$(0) + "*.rtf" + Chr$(0)
ofn.lpstrFile = Space$(254)
ofn.nMaxFile = 255
ofn.lpstrFileTitle = Space$(254)
ofn.nMaxFileTitle = 255
ofn.lpstrInitialDir = CurDir
ofn.lpstrTitle = "Our File Open Title"
ofn.flags = 0
Dim a
a = GetOpenFileName(ofn)
If Then
MsgBox "File to Open: " + Trim$(ofn.lpstrFile)
Else
MsgBox "Cancel was pressed"
End If
End Sub
Кому не в лом укажите куда чего сюда надо всунуть, чтобы получился старый стиль. Когда всю жисть юзаешь Сomdlg.ocx трудно сразу соориентироваться...
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 19.03.06 02:54
да ни как коль comdlg32.dll XP-шная
Номер ответа: 11
Автор ответа:
Юрий
Вопросов: 11
Ответов: 30
Профиль | | #11
Добавлено: 19.03.06 12:36
HACKER, ни фига , как-то можно... Об этом даже в MSDN написано. Правда в английском я не шарю, а как Промт перевел черт его знает... Но если догадываться по смыслу перевода, то можно в XP использовать старый стиль....Может еще кто знает?
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 19.03.06 18:36
Перепиши на стандартных контролах (сделай свой диалог)
Номер ответа: 13
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #13
Добавлено: 19.03.06 19:24
Блин. Говорил же, что нужно сделать callback и возвращать из него ноль. Неужели так трудно сделать?
В тот код, что ты привел, добавь
ofn.lpfnHook = GetAddr(AddressOf OFNHookProcOldStyle)
Сделай модуль и в нем помести эти две функции:
GetAddr = lpWndProc
End Function
Public Function OFNHookProcOldStyle(hwnd As Long, uMsg As Long, wparam As Long, lparam As Long) As Long
OFNHookProcOldStyle = 0
End Function
Номер ответа: 14
Автор ответа:
Юрий
Вопросов: 11
Ответов: 30
Профиль | | #14
Добавлено: 19.03.06 19:33
HOOLIGAN, спасибо, вот это ясно как белый день. Было бы больше знаний у меня, задавал бы меньше вопросов.
Номер ответа: 15
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #15
Добавлено: 20.03.06 10:16
www.desaware.com. Сложно угадать