Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: создание окона с WndProc в классе Добавлено: 04.02.05 14:05  

Автор вопроса:  DaSharm | Web-сайт: dasharm.com | ICQ: 780477 
создание окона с WndProc в классе. Как организовать? (Интересует спрощеный кусок кода)

Ответить

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

Номер ответа: 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 удобно использовать, если сабкласс в библиотеку вынести.

Ответить

Номер ответа: 5
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #5
Добавлено: 04.02.05 23:13
2sne: спасибо, знал что ты ответиш :)

Ответить

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 04.02.05 23:34
2Nash Bridges, дареному коню в зубы не смотрют ;) Т.ч. рассуждать что удобно а что не очень оно бессмысленно :( Про опкоды - ты дизассемлируй да посмотри ;)

А вообще можно и такой код написать чтобы WndProc вызывался только при определенных значениях... но зачем ?

2DaSharm, тут и к гадалке не ходи ;) Потом расскажешь работает-ли...

Ответить

Страница: 1 |

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



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