|
А как делать сабклассинг внутри класса?
|
|||
---|---|---|---|
#18+
Вот не подсказал мне с Listview никто, я таки решил сваять его на API, теперь мучаюсь - видимо надолго. Ну заодно оформить как класс. Наваял такую фигню: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Ну, светлая идея чего хочу надеюсь понятна. Ругается на AddressOf, че дальше делать не знаю, делегатов тут нету. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 06:14 |
|
А как делать сабклассинг внутри класса?
|
|||
---|---|---|---|
#18+
AddressOf работает только с функциями, объявленными в модулях. Использовать для сабклассинга функцию, объявленную в классе, можно только с помощью ассемблерных хаков. Здесь написали библиотеку, облегчающую эту задачу, и используют ее во всех своих поделках, но у меня она стабильно валилась на каком-то конкретном сообщении. Впрочем, всего лишь для генерации события в контроле из оконной процедуры это не надо. Я давал тебе свою библиотеку коммон контролов ucComCtl2 или 3? Вроде давал. Там это делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 09:57 |
|
А как делать сабклассинг внутри класса?
|
|||
---|---|---|---|
#18+
Antonariy, давать то давал, только я ее тогда не осилил. Да думаю проще свой написать с минимумом необходимого функционала, вроде уже продвинулся. Я нашел чистый пример как сабклассинг в классе делается: http://www.xtremevbtalk.com/showthread.php?t=228745 В подробности особо не влезал, но вроде все чисто работает. Единственная проблема, этот код позволяет делать сабклассинг только на одно hwnd. А надо минимум 1) сам Listview 2) Parent MouseUp через ListView напр. глючит, надо делать через родителя. Не помню что там с heder-ами, надо ли их сабклассить. Короче я этот код тупо задвоил, сделал везде по 2 ф-ции ISubclass_WndProc ISubclass_WndProcParent SubWnd SubWndParent и т.д. вроде не глючит ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 10:34 |
|
А как делать сабклассинг внутри класса?
|
|||
---|---|---|---|
#18+
Дмитрий77Я нашел чистый пример как сабклассинг в классе делается: http://www.xtremevbtalk.com/showthread.php?t=228745 В подробности особо не влезал, но вроде все чисто работает.Его аналог я и использовал. Дмитрий77Единственная проблема, этот код позволяет делать сабклассинг только на одно hwnd.Проблема не в этом, а в "особо не влезал", хотя там влезать не во что, весь код на экран помещается. Этот способ способен сабклассить любое количество окон. У меня он сабклассит и ListView и его контейнер как тебе и нужно. Вся его суть — сохранить (SetProp) указатели на необходимые объекты (ObjPtr) и старую оконную процедуру в свойствах того окна, в процедуре которого нужно дергать объекты, и вытащить их в ней (GetProp). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 12:13 |
|
|
start [/forum/topic.php?fid=60&fpage=52&tid=2156726]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 152ms |
0 / 0 |