Страница: 1 |
Вопрос: создание окона с WndProc в классе | Добавлено: 04.02.05 14:05 |
Автор вопроса: ![]() |
создание окона с WndProc в классе. Как организовать? (Интересует спрощеный кусок кода) |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() Вопросов: 5 Ответов: 139 |
Профиль | Цитата | #1 | Добавлено: 04.02.05 18:09 |
WndProc в смысле оконная процедура? Так в классе ее не сделать, только модули. Или из модуля обращаться к экземпляру класса. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #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 Автор ответа: ![]() ![]() Вопросов: 5 Ответов: 139 |
Профиль | Цитата | #4 | Добавлено: 04.02.05 20:18 |
Здорово, для общего развития ![]() ProcNumber - номер функции clsWndProc класса, начиная сверху по порядку вниз...
Наверное, не очень удобно. Вообще, еще Implements удобно использовать, если сабкласс в библиотеку вынести. |
Номер ответа: 5 Автор ответа: ![]() ![]() ICQ: 780477 Вопросов: 72 Ответов: 1297 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 04.02.05 23:13 |
2sne: спасибо, знал что ты ответиш ![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 04.02.05 23:34 |
2Nash Bridges, дареному коню в зубы не смотрют ![]() ![]() ![]() А вообще можно и такой код написать чтобы WndProc вызывался только при определенных значениях... но зачем ? 2DaSharm, тут и к гадалке не ходи ![]() |
Страница: 1 |
|