прошу помощи: API и перехват событий мыши в другом приложени

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sergio76
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.06.2008 (Сб) 13:51

прошу помощи: API и перехват событий мыши в другом приложени

Сообщение Sergio76 » 14.06.2008 (Сб) 14:07

Приветствую всех
вообще то заняться изучением VB мне пришлось по необходимости, а именно прога, с которой я имею дело на работе, имеет API, написанный на VB. ПРога называется FEMAP (это работа с конечноэлементными моделями)
У меня возникла необходимость написать программу, с помощью которой я бы мог интерактивно менять конечноэлементую сетку путем нажатия мыши и перетаскивания узлов на нужное место.
Сама идея мне понятна - нужно в момент клика определить координаты курсора и найти ближайший узел ну и дальше дело техники. Но вот беда - в VB есть обработчик события мыши только своей формы. Как я понимаю, нужно привлечь win32 API, но вот как это сделать в применении к данному конкретному случаю? Перерыл весь интернет - не могу докопаться до истины.
Заранее спасибо

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 14.06.2008 (Сб) 18:57

SendInput? Или я не понял вопроса.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: прошу помощи: API и перехват событий мыши в другом прило

Сообщение Viper » 15.06.2008 (Вс) 6:05

Sergio76 писал(а):У меня возникла необходимость написать программу, с помощью которой я бы мог интерактивно менять конечноэлементую сетку путем нажатия мыши и перетаскивания узлов на нужное место.
Сама идея мне понятна - нужно в момент клика определить координаты курсора и найти ближайший узел ну и дальше дело техники.
Внимательно читайте документацию FEMAP, в языке встроенном в FEMAP имеются все необходимые для решения данной задачи средства.
Весь мир матрица, а мы в нем потоки байтов!

Sergio76
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.06.2008 (Сб) 13:51

Re: прошу помощи: API и перехват событий мыши в другом прило

Сообщение Sergio76 » 15.06.2008 (Вс) 6:37

Viper писал(а):Внимательно читайте документацию FEMAP, в языке встроенном в FEMAP имеются все необходимые для решения данной задачи средства.

Не могли бы Вы подсказать хотя бы направление где искать? Я облазил всю справки API. Действительно, есть методы работы с сеткой. Но список событий довольно скуден - 12 штук и ни одного мышиного. Или я что то не так понимаю?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 15.06.2008 (Вс) 10:24

В API для FEMAP имеются средства выбра узлов, элементов и всего прочего. Или это все же не то, что надо?
Весь мир матрица, а мы в нем потоки байтов!

Sergio76
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.06.2008 (Сб) 13:51

Сообщение Sergio76 » 15.06.2008 (Вс) 12:47

Это немного не то.
Вот что мне нужно. На сайте фемапа появилась информация о нововведениях в следующей 10 версии. В частности там будет интерактивная команда вроде node-moveby. Кликаешь на узел и тащишь в нужном направлении, сетка автоматом меняется. Вещь наиполезнейшая будет. Но вот только когда...
Идея у меня какая. Моя прога должна получать событие типа WM_MOUSEDOWN от окна фемапа и определять номер ближайшего узла. Далее при наличии сообщений WM_MOUSEMOVE передвигать этот узел в нужном направлении путем вызова фемаповской apiшной функции.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 16.06.2008 (Пн) 7:40

Sergio76 писал(а):Идея у меня какая. Моя прога должна получать событие типа WM_MOUSEDOWN от окна фемапа и определять номер ближайшего узла. Далее при наличии сообщений WM_MOUSEMOVE передвигать этот узел в нужном направлении путем вызова фемаповской apiшной функции.
Вот оно что. Ну WM_MOUSEDOWN и прочие мышиные дела ты перехватишь средсвами Win API, а вот как ты собираешься получить экранные координаты узлов? Узел координируется относительно системы координат модели, а нужно относительно экрана.
Весь мир матрица, а мы в нем потоки байтов!

Sergio76
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.06.2008 (Сб) 13:51

Сообщение Sergio76 » 16.06.2008 (Пн) 15:42

ндааа, действительно
а ведь нету такой функции
а я думал есть (((((((


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: SemrushBot и гости: 45

    TopList