Страница: 1 |
Страница: 1 |
Вопрос: CallBack
Добавлено: 10.03.06 20:07
Автор вопроса: Tamplier | ICQ: 298742928
Нужно использование CallBack'а при использовании MessageBoxIndirect. На сколько я понял, в переменную lpfnMsgBoxCallback типа MSGBOXPARAMS передается адрес процедуры. Ну, поскольку напрямую использовать AddressOf не удалось, написал функцию
GetAddressOfFunction = Addr
End Function
В качастве параметра передавал
CallBackMsg объявлена как Public
VB мне говорит, что я неправильно использую AddressOf.
Что можно сделать?
Вот код:
Dim MBP As MSGBOXPARAMS, Addr As Long
MBP.dwStyle = MB_ICONASTERISK
MBP.hwndOwner = Me.hWnd
MBP.lpszCaption = "Message"
MBP.lpfnMsgBoxCallback = GetAddressOfFunction(AddressOf BrowseCallbackProc)
MessageBoxIndirect MBP
End Sub
Public Function GetAddressOfFunction(ByVal Addr As Long) As Long
GetAddressOfFunction = Addr
End Function
Public Function BrowseCallbackProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal lp As Long, ByVal pData As Long) As Long
Dim lpIDList As Long
Dim ret As Long
Dim sBuffer As String
Dim i As Integer, flag As Boolean, sPath As String
On Error Resume Next
' тут, типа, код
BrowseCallbackProc = 0
End Function
P.S. Поиск ничего дельного не дал. Есть что-то подобно, то там надо еще доп. форму создавать. А у меня проект и так уже довольно большой.
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #1
Добавлено: 10.03.06 20:09
BrowseCallbackProc должна быть объявлена в модуле
Номер ответа: 2
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #2
Добавлено: 10.03.06 20:26
Опаньки... Спасибо.
Номер ответа: 3
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #3
Добавлено: 10.03.06 20:41
Ага