Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вызов контекстного меню программно

282
14 ноября 2006 года
Bard
481 / / 26.02.2006
Hi!

Короче мне надо програмно вызвать контекстное меню. Я делаю так:

 
Код:
Const WM_RBUTTONDOWN = &H204

Dim h As Long
Call SendMessageA(h, WM_RBUTTONDOWN, 0, 0)


Меню выскакивает не там где курсор мышки, а где угодно. Как сделать что б оно выскочило в указаных координатах?
334
14 ноября 2006 года
HexEdit
809 / / 27.07.2006
Координаты задаются в lParam.
тоесть чтото вроде того:
 
Код:
SendMessage(h, WM_RBUTTONDOWN, 0, MAKELONG(x,y));

Это если на С, VB не знаю, сказать не могу.
282
14 ноября 2006 года
Bard
481 / / 26.02.2006
[QUOTE=HexEdit]Это если на С, VB не знаю, сказать не могу.[/QUOTE]

Жаль, мне как раз на VB и надо.
334
14 ноября 2006 года
HexEdit
809 / / 27.07.2006
Вообще полностью как у тебя, только вместо MAKELONG используй примерно так
<y> <сдвиг влево на 16 бит> + <x>
Вроде если так то
 
Код:
SendMessage(h, WM_RBUTTONDOWN, 0, y shl 16 + x);
282
14 ноября 2006 года
Bard
481 / / 26.02.2006
[QUOTE=HexEdit]<сдвиг влево на 16 бит>[/QUOTE]

А по подробнее?
334
14 ноября 2006 года
HexEdit
809 / / 27.07.2006
Я плохо знаю VB (даже почти не знаю), трудно сказать как она там, но скорее всего SHL, на C - <<
282
14 ноября 2006 года
Bard
481 / / 26.02.2006
Обьясни как ето матиматичаски происходит? Потому что в VB такой ф-ции нет.
334
14 ноября 2006 года
HexEdit
809 / / 27.07.2006
Тогда вместо сдвига 16 бит, умножай на 65536
 
Код:
SendMessage(h, WM_RBUTTONDOWN, 0, y * 65536 + x);
282
14 ноября 2006 года
Bard
481 / / 26.02.2006
Умножил.. С осью X все в порядке, а вот ось Y почему-то больше чем недо на пикселов сорок...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог