Страница: 1 |
|
Вопрос: создание окона с WndProc в классе
|
Добавлено: 04.02.05 14:05
|
|
Автор вопроса: DaSharm | Web-сайт: dasharm.com | ICQ: 780477
|
создание окона с WndProc в классе. Как организовать? (Интересует спрощеный кусок кода)
Ответить
|
Номер ответа: 1 Автор ответа: Nash Bridges
Вопросов: 5 Ответов: 139
|
Профиль | | #1
|
Добавлено: 04.02.05 18:09
|
WndProc в смысле оконная процедура? Так в классе ее не сделать, только модули. Или из модуля обращаться к экземпляру класса.
Ответить
|
Номер ответа: 2 Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34 Ответов: 5445
|
Web-сайт: hw.t-k.ru Профиль | | #2
|
Добавлено: 04.02.05 19:48
|
2Nash Bridges, ты говори да не утверждай Хотя кто знает может ты и прав
' §§§§§§§§§§§§§§§§§§§§§§§§§§ Сабклассировщик §§§§§§§§§§§§§§§§§§§§§§§§§§
Private Const AsmMain As String = "558BEC83C4FC8D45FC50FF7514FF7510FF750CFF75086800000000B800000000FFD08B45FCC9C21000"
Public Function ( ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'
End Function
PPrivate Sub VirtFunctions( ByRef ASM() As Byte, _
Optional ByVal ProcNumber As Long)
Dim lng As Long, tPtr As Long
lng = Len(AsmMain) \ 2&
ReDim ASM(cNull To lng - vbNull)
For lng = cNull To lng - vbNull
ASM(lng) = Val("&H" & Mid$(AsmMain, (lng) * 2& + vbNull, 2& )
Next
Call CopyMemory(tPtr, ByVal ObjPtr( Me), 4&
Call CopyMemory(lng, ByVal tPtr + &H1C + (4& * ProcNumber), 4&
Call CopyMemory(ASM(23), ObjPtr( Me), 4&
Call CopyMemory(ASM(28), lng, 4&
End Sub
ProcNumber - номер функции clsWndProc класса, начиная сверху по порядку вниз...
Я собственно не тестировал и не уверен что то что дал будет работать, но что-то в этом духе и должно быть...
Ответить
|
Номер ответа: 3 Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34 Ответов: 5445
|
Web-сайт: hw.t-k.ru Профиль | | #3
|
Добавлено: 04.02.05 19:48
|
2Nash Bridges, ты говори да не утверждай Хотя кто знает может ты и прав
' §§§§§§§§§§§§§§§§§§§§§§§§§§ Сабклассировщик §§§§§§§§§§§§§§§§§§§§§§§§§§
Private Const AsmMain As String = "558BEC83C4FC8D45FC50FF7514FF7510FF750CFF75086800000000B800000000FFD08B45FCC9C21000"
Public Function ( ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'
End Function
PPrivate Sub VirtFunctions( ByRef ASM() As Byte, _
Optional ByVal ProcNumber As Long)
Dim lng As Long, tPtr As Long
lng = Len(AsmMain) \ 2&
ReDim ASM(cNull To lng - vbNull)
For lng = cNull To lng - vbNull
ASM(lng) = Val("&H" & Mid$(AsmMain, (lng) * 2& + vbNull, 2& )
Next
Call CopyMemory(tPtr, ByVal ObjPtr( Me), 4&
Call CopyMemory(lng, ByVal tPtr + &H1C + (4& * ProcNumber), 4&
Call CopyMemory(ASM(23), ObjPtr( Me), 4&
Call CopyMemory(ASM(28), lng, 4&
End Sub
ProcNumber - номер функции clsWndProc класса, начиная сверху по порядку вниз...
Я собственно не тестировал и не уверен что то что дал будет работать, но что-то в этом духе и должно быть...
Ответить
|
Номер ответа: 4 Автор ответа: Nash Bridges
Вопросов: 5 Ответов: 139
|
Профиль | | #4
|
Добавлено: 04.02.05 20:18
|
Здорово, для общего развития А этот код можно поддерживать программисту ВБ? Чего там в опкодах написано?
ProcNumber - номер функции clsWndProc класса, начиная сверху по порядку вниз...
Наверное, не очень удобно.
Вообще, еще Implements удобно использовать, если сабкласс в библиотеку вынести.
Ответить
|
Страница: 1 |
Поиск по форуму