Как создать обработчик своего события?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Как создать обработчик своего события?

Сообщение Fedorfx » 01.02.2005 (Вт) 3:30

Как поймать в vb/net то что шлет ему vb6 вот так
L = SendMessage(hwnd , 777, 0, ByVal "test")
т.е. надо создать обработку события со своим номером и принять строковой параметр.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.02.2005 (Вт) 5:57

Процедуру WndProc я, помнится, ещё давно советовал заценить :)

А для собственных сообщений рекомендуется юзать registerwindowmessage...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 02.02.2005 (Ср) 2:32

А как вытащить строку из LParam?

vb6
L = SendMessage(hwnd, 2222, 0, "Test")
vb.net
Dim str As String = Marshal.PtrToStringAuto(m.LParam)

не прокатывает :-(

Я так понимаю там адрес, но адрес то из другого пространства.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.02.2005 (Ср) 4:49

Читаем MSDN :)

Система осуществляет маршалинг параметров для всех встроенных сообщений. Для всех собственных вы должны осуществлять собственный же маршалинг.

Иными словами, заводи memory file mapping и сливай данные в него...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 02.02.2005 (Ср) 13:46

Если я правильно понял то для WM_COPYDATA есть встроенная поддержка а для WM_USER+xxx надо самому мутить??
И как принять WM_COPYDATA со строкой в VB.Net???

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.02.2005 (Ср) 15:59

Правильно понял.
Скастовать lParam к типу COPYDATASTRUCT и взять...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 03.02.2005 (Чт) 21:04

GSerg писал(а):Читаем MSDN :)

Система осуществляет маршалинг параметров для всех встроенных сообщений. Для всех собственных вы должны осуществлять собственный же маршалинг.


А где про это можно на русском языке почитать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.02.2005 (Пт) 4:08

Library не переведена...
Хотя про NET перевели :)
Поищи на мелкософте...
Под рукой просто сейчас нет. Но там была какая-то фигня в интеропе для вытаскивания структур из указателя.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 69

    TopList