Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Коммон диалог в старом стиле Добавлено: 17.03.06 19:48  

Автор вопроса:  Юрий
Привет! Знаю, что в Си Билдере при использовании коммон диалога можно подключить к нему некий флаг ...OldStyleDialog. При этом диалоги открытия - сохранения будут отображаться в старом стиле Win 95 - 98 при работе в Win XP. Вопрос: есть ли подобный флаг в VB6? Спасибо.

Ответить

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

Номер ответа: 1
Автор ответа:
 sne



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #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 (a) 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.flags = &H20
ofn.lpfnHook = GetAddr(AddressOf OFNHookProcOldStyle)


Сделай модуль и в нем помести эти две функции:

Public Function GetAddr(ByVal lpWndProc As Long) As Long
    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. Сложно угадать :)

Ответить

Страница: 1 |

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



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